2

我有模型:

class Product < ActiveRecord::Base
  attr_accessible :category, :description, :img_url, :name, :price, :quantity, :tags

  serialize :tags, Hash
end

并尝试为它制作形式

<%= form_for @product do |f| %>
    <%= f.label :"tags[:condition]_new", "new" %>
    <%= f.radio_button :"tags[:condition]", "New", checked: true %>
    <%= f.radio_button :"tags[:condition]", "Used" %> 
<% end %>

不幸的是,它提高了

#Product:0x007fd26d965810> <%= f.radio_button :"tags[:condition]", "Used" %> <-- 仅适用于第二行的未定义方法 `tags[:condition]'。首先是好的。为什么?!

我不明白为什么它试图把方法放在上面。有谁知道如何为哈希值创建适当的字段?+ 为什么它只在第二个 f.radio_button 上失败而我通过了第一个?

4

1 回答 1

2

这是因为您没有为第二个单选按钮设置任何值,试试这个,它会正常工作。

<%= f.radio_button :"tags[:condition]", "Used", checked: false %>

好像您不会传递任何值,然后FormHelper类将调用'name[:condition]'方法@product以获取其相应的值,尽管模型中没有定义它引发异常的方法。

于 2013-07-12T03:02:32.147 回答