我正在尝试使用通用fields_for方法传递参数。我有一个表格:
<%= form_for @Album do |album| %>
...
<%= fields_for :photo do |photo| %>
<%= photo.text_field :name %>
<%= photo.text_area :description %>
...
<% end %>
<% end %>
我希望这个表单会生成照片[名称]和照片[描述],这样当我提交表单时,我的控制器可以检查params [:photo]是否存在... #do something。 我没有使用嵌套表单的原因是因为有时甚至不会使用这些表单字段。
问题是我收到的是fields_for:photo line的错误。它说你没有期望它有一个零对象!您可能期望一个数组的实例。
如果没有nil,我怎么能做这个通用字段?
答案 0 :(得分:0)
您遇到此问题,因为您的控制器中没有定义@photo变量。与fields_for
一样,form_for
旨在成为现有对象的包装器。符号:photo
正在变成一个实例变量,但它是零,所以这就是你遇到这些错误的原因。您可以通过在控制器操作中定义照片来更正此问题:
@photo = @album.photos.first # if there's an existing photo
@photo = @album.photos.new # if there's not
如果您根本不想定义对象,则只需使用常规表单标记而不是fields_for
。