所以我有一個類模型Rails的嵌套與check_box循環屬性
class Category < ActiveRecord::Base
has_many :provider_categories
has_many :providers, :through => :provider_categories
end
和提供程序模型
class Provider < ActiveRecord::Base
has_many :provider_categories
has_many :categories, :through => :provider_categories
accepts_nested_attributes_for :provider_categories, :allow_destroy => true
end
這裏是我的provider_category模型
class ProviderCategory < ActiveRecord::Base
belongs_to :provider
belongs_to :category
end
我想創建嵌套表單以將類別包含到提供者表單中
= form_for @provider do |f|
...
[email protected]_index do |category,index|
=f.fields_for :provider_category, category do |pl|
=pl.check_box :category_id
=pl.label category.name
=pl.hidden_field :provider_id, value: @provider.id
當網頁加載完畢後我得到的複選框未配合
undefined method `category_id' for #<Category:0x0000010184ff60>
編輯:
如果我改變:CATEGORY_ID到ID它的工作原理,但HTML outpuy看起來像這樣
<input name="provider[provider_category][id]" type="hidden" value="0"><input checked="checked" id="provider_provider_category_id" name="provider[provider_category][id]" type="checkbox" value="1">
<label for="provider_provider_category_Acupuncture">Acupuncture</label>
<input id="provider_provider_category_provider_id" name="provider[provider_category][provider_id]" type="hidden" value="1">
編輯2:
我結束了使用check_box_tag
[email protected]_index do |category|
=f.fields_for :provider_category, category do |pl|
.li
=check_box_tag "provider[provider_category][category_id]", category.id
=pl.label category.name
=pl.hidden_field :provider_id, value: @provider.id
現在HTML輸出似乎是正確的,但它不保存。當我選擇多個項目,這是從節約
"provider"=>{"name"=>"Mr. Awesome", "phone"=>"999-999-9999", "email"=>"[email protected]", "address"=>"awesome land", "provider_category"=>{"category_id"=>"3", "provider_id"=>"1"}}, "commit"=>"Save", "id"=>"1"}
我做了選擇3個選項,但只有加入到哈希最後一個
我還增加了供應商類別供應商控制器的強烈PARAMS哈希
params.require(:provider).permit(..., :provider_categories => [:category_id, :provider_id])
感謝您的幫助提前
我仍然得到相同的錯誤我最終使用check_box_tag「provider [provider_category] [category_id]」,category.id – Marrento
'check_box_tag'是一種替代方案。但是你現在的代碼只需要修改一下就可以了。我想知道爲什麼你會得到同樣的錯誤。如果你想,並且很想知道我們可以在聊天http://chat.stackoverflow.com/rooms/48530/ror上進行調試 –