forms - 使用泛型fields_for的Ruby on Rails Nil对象

  显示原文与译文双语对照的内容

我正在尝试使用通用fields_for方法传递参数。 我有一个表格:


<%= form_for @Album do |album| %>


...


<%= fields_for :photo do |photo| %>


 <%= photo.text_field :name %>


 <%= photo.text_area :description %>


. . .


<% end %>


<% end %>



我希望这张表格能够生成照片 [name] 和照片 [description],这样当我提交表单时,我的控制器可以检查。 我不使用嵌套形式的原因,因为有时这些表单字段甚至不会被使用。

问题是,我得到的是fields_for的一个错误:照片行。 它表示当你不期望它的时候你有一个零对象 ! 你可能需要 array的实例。

我怎样才能在没有它的情况下做这个通用的fields_for?

时间: 原作者:

因为控制器中没有定义 @photo 变量,所以遇到了这个问题。 fields_forform_for 一样,打算成为现有对象的包装器。 符号 :photo 被转换成一个实例变量,但是它是零所以这就是为什么你要击中这些错误。 你可以通过在控制器操作中定义照片来更正这里问题:


@photo = @album.photos.first # if there's an existing photo


@photo = @album.photos.new # if there's not



如果你根本不想定义一个对象,那么你就需要使用常规表单标签而不是 fields_for

...