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