0

我正在尝试使用通用 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 行的错误。它说你有一个 nil 对象,但你没想到它!您可能期望一个数组的实例。

如果它不为零,我怎么能做这个通用的fields_for?

4

1 回答 1

0

您遇到此问题是因为您的控制器中没有定义 @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.

于 2012-04-12T16:27:58.330 回答