在 Rails 中使用组合

发布于 2024-12-08 15:19:04 字数 852 浏览 0 评论 0原文

我不知道哪种是最好或正确的制作方法,所以我正在寻找建议。

阶段: 我正在使用 Rails 3 制作一些网络应用程序。 成像两个模型:CanvasZonecanvas 对象旨在成为一个正方形,其中有四个区域(北、南、东和西)。 每个zone都有以下属性:text:stringrgb_color:string。 我想渲染一个 HTML 表单,其中用户必须捕获 Canvas 注册表,换句话说,在此表单中将有四组区域字段。

问题: 我怎样才能在一个 HTML 表单中捕获所有这些内容?

如果我只有一个区域,我可以这样做:

<%= form_for(@zone) do |f| %>
  <div class="field">
    <%= f.label :text %><br />
    <%= f.text_field :text %>
  </div>
  <div class="field">
    <%= f.label :rgb_color %><br />
    <%= f.text_field :rgb_color %>
  </div>
  <div class="actions">
    <%= f.submit %>
  </div>
<% end %>

但是如果有四个区域,我应该如何做呢?

I don't know which is the best or right way to make something, so I'm looking for suggestions.

Stage:
I am using Rails 3 to make some web app.
Imaging two models: Canvas and Zone.
A canvas object intents to be a square in which there will be four zone's (north, south, east and west).
Each zone has these attributes: text:string and rgb_color:string.
I want to render a HTML form in which user must capture a Canvas registry, in other words, in this form will have four groups of zones fields.

Problem:
How can I capture all of them in one HTML form?

If I would have only one zone I can do something like this:

<%= form_for(@zone) do |f| %>
  <div class="field">
    <%= f.label :text %><br />
    <%= f.text_field :text %>
  </div>
  <div class="field">
    <%= f.label :rgb_color %><br />
    <%= f.text_field :rgb_color %>
  </div>
  <div class="actions">
    <%= f.submit %>
  </div>
<% end %>

But how should I do it with four zones?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

夜吻♂芭芘 2024-12-15 15:19:04

您可以使用 accepts_nested_attributes_for 来执行此操作fields_for

模型:

class Canvas < ActiveRecord::Base
  has_many :zones
  accepts_nested_attributes_for :zones
end

控制器:

class CanvasesController < ApplicationController
  def new
    @canvas = Canvas.new
    4.times { @canvas.zones.build }
  end
end

视图:

<%= form_for(@canvas) do |f| %>
  <%= f.fields_for :zones do |zone| %>
    <div class="field">
      <%= zone.label :text %><br />
      <%= zone.text_field :text %>
    </div>
    <div class="field">
      <%= zone.label :rgb_color %><br />
      <%= zone.text_field :rgb_color %>
    </div>
  <% end %>
  <div class="actions">
    <%= f.submit %>
  </div>
<% end %>

有关更多详细信息和说明,请查看以下内容:

You can do this with accepts_nested_attributes_for and fields_for:

Model:

class Canvas < ActiveRecord::Base
  has_many :zones
  accepts_nested_attributes_for :zones
end

Controller:

class CanvasesController < ApplicationController
  def new
    @canvas = Canvas.new
    4.times { @canvas.zones.build }
  end
end

View:

<%= form_for(@canvas) do |f| %>
  <%= f.fields_for :zones do |zone| %>
    <div class="field">
      <%= zone.label :text %><br />
      <%= zone.text_field :text %>
    </div>
    <div class="field">
      <%= zone.label :rgb_color %><br />
      <%= zone.text_field :rgb_color %>
    </div>
  <% end %>
  <div class="actions">
    <%= f.submit %>
  </div>
<% end %>

For more details and explanation have a look at this:

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文