我应该如何为多个对象创建rails表单?

时间:2014-03-26 17:43:55

标签: ruby-on-rails ruby

产品有很多图像。我正在创建一个仅编辑产品图像的表单。

这是我到目前为止所做的:

<%= form_for(@product, :html => { :multipart => true }) do |f| %>
  <%= f.fields_for :images do |i| %>

  <% end %>
<% end %>

这部分是否正确?

我需要每个图像的单选按钮和文件字段,我该如何为每个图像执行此操作?

此表格仅用于编辑不创建图像的图像。

2 个答案:

答案 0 :(得分:1)

假设你有一个任意数量的图像,你可能最好在你的应用程序中创建一个单独的模型(在这个例子中称之为Images)。然后,您可以定义产品和图像之间的多对一关系。 rails guide on active record associations有一些关于如何设置has_many关系的好例子。

要回答您的问题,在您拥有模型的关系后,最好使用嵌套表单。有一个old railscast episode显示了如何执行此操作,如果您有一个railscast成员资格,则为newer updated one

答案 1 :(得分:1)

我假设您的产品型号具有以下关联:

has_many :images

要解决您的问题,您需要查看嵌套模型的表单。 将以下行添加到Product模型中,它将允许您修改父模型表单中的嵌套模型。

accepts_nested_attributes_for :images

修改表单:

<%= f.fields_for :images do |i| %>
 i.radio_button_tag :field_name
 f.file_field :file
<% end %>

不要忘记将带有图像字段的images_attributes哈希添加到批量分配的允许属性列表中,您应该好好去!

This railscast可能非常方便。祝你好运!