我有模特:
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 %>
不幸的是它引导了
未定义的方法`标签[:condition]'为#Product:0x007fd26d965810&gt; &lt;%= f.radio_button:“tags [:condition]”,“使用”%&gt; &lt; - 仅适用于第二行。首先是好的。为什么?!
我无法弄清楚为什么它试图把方法放在上面。有谁知道如何为哈希值制作适当的字段? +为什么它仅在第二个f.radio_button上失败并且我通过第一个?
答案 0 :(得分:2)
这是因为你没有为第二个单选按钮设置任何值,试试这个,它会正常工作。
<%= f.radio_button :"tags[:condition]", "Used", checked: false %>
好像你不会传递任何值,FormHelper
类会在'name[:condition]'
上调用@product
方法来获取其相应的值,尽管它引发的模型中没有定义任何方法异常。