使用泛型fields_for的 Nil 对象



我正在尝试使用通用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

相关内容

  • 没有找到相关文章

最新更新