2013-07-12 62 views
2

領域我已經得到了模型:的Rails:用的form_for哈希

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 %> 

不幸的是導軌提高

未定義的方法`tags [:condition]'爲#Product:0x007fd26d965810> <%= f.radio_button:「tags [:condition]」,「Used」%> < - 僅適用於第二線。首先是okey。爲什麼?!

我不知道爲什麼它試圖把方法放在它上面。有沒有人知道如何爲散列值做適當的字段? +爲什麼它只在第二個f.radio_button失敗,我通過第一個?

回答

2

這是因爲你沒有爲第二個單選按鈕設置任何值,試試這個,它會正常工作。

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

正如如果你不傳遞任何值,則FormHelper類將呼籲@product'name[:condition]'方法獲取其相應的價值,雖然沒有在它引發的異常模型中定義的方法。