Rails:form_for with Hash字段

时间:2013-07-12 02:33:58

标签: ruby-on-rails ruby ruby-on-rails-3 forms ruby-on-rails-3.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 %>

不幸的是它引导了

  

未定义的方法`标签[:condition]'为#Product:0x007fd26d965810&gt;   &lt;%= f.radio_button:“tags [:condition]”,“使用”%&gt; &lt; - 仅适用于第二行。首先是好的。为什么?!

我无法弄清楚为什么它试图把方法放在上面。有谁知道如何为哈希值制作适当的字段? +为什么它仅在第二个f.radio_button上失败并且我通过第一个?

1 个答案:

答案 0 :(得分:2)

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

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

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