我在Rails 3中有一個嵌套形式,如下所示,在創建過程中工作正常。在編輯階段,我得到警告:無法批量分配受保護的屬性:類型。表單不應該試圖設置「類型」,而且根據參數我可以看出,它並沒有這樣做。獲取未設置字段的質量分配錯誤
class TagSetNomination < ActiveRecord::Base
belongs_to :pseud
belongs_to :owned_tag_set
has_many :fandom_nominations, :dependent => :destroy
has_many :character_nominations, :dependent => :destroy
has_many :relationship_nominations, :dependent => :destroy
has_many :freeform_nominations, :dependent => :destroy
accepts_nested_attributes_for :fandom_nominations, :character_nominations, :relationship_nominations, :freeform_nominations, {
:allow_destroy => true,
:reject_if => proc { |attrs| attrs[:tagname].blank? }
}
....
end
所有這些提名類都是這個基類的子類:
class TagNomination < ActiveRecord::Base
belongs_to :tag_set_nomination
....
end
這是我的表格的相關位:
<%= error_messages_for :tag_set_nomination %>
<%= form_for(@tag_set_nomination, :url => (@tag_set_nomination.new_record? ? tag_set_nominations_path(@tag_set) : tag_set_nomination_path(@tag_set, @tag_set_nomination)), :html => {:method => (@tag_set_nomination.new_record? ? :post : :put)}) do |f| %>
<h4><%= ts("Tag Nominations") %></h4>
<fieldset class="tagset">
<dl>
<% @tag_set_nomination.character_nominations.each_with_index do |character_nomination, index| %>
<%= f.fields_for :character_nominations, character_nomination do |nom_form| %>
<%= render 'tag_nominations', :nom_form => nom_form, :tag_type => 'character', :tag_nominations_counter => index %>
<% end %>
<% end %>
</dl>
</fieldset>
....
<% end %>
而且從日誌一些希望相關位:
Started POST "/tag_sets/1/nominations/3" for 68.175.83.208 at 2011-08-23 02:59:08 +0000
Parameters: { ... "tag_set_nomination"=>{"character_nominations_attributes"=>{"0"=>{"tagname"=>"Sam", "parent_tagname"=>"", "tagnotes"=>"", "id"=>"12"}, "1"=>{"tagname"=>"Dean", "parent_tagname"=>"", "tagnotes"=>"", "id"=>"13"}, "2"=>{"tagname"=>"Yarbld", "parent_tagname"=>"Supernatural", "tagnotes"=>"some notes", "id"=>"16"}} ... }
SQL (0.1ms) SELECT COUNT(*) FROM `tag_nominations` WHERE `tag_nominations`.`type` = 'CharacterNomination' AND (`tag_nominations`.tag_set_nomination_id = 3)
...
SQL (0.2ms) ROLLBACK
Pseud Load (0.2ms) SELECT `pseuds`.* FROM `pseuds` WHERE (`pseuds`.user_id = 8)
CharacterNomination Load (0.3ms) SELECT `tag_nominations`.* FROM `tag_nominations` WHERE `tag_nominations`.`type` = 'CharacterNomination' AND (`tag_nominations`.tag_set_nomination_id = 3)
WARNING: Can't mass-assign protected attributes: type
WARNING: Can't mass-assign protected attributes: type
WARNING: Can't mass-assign protected attributes: type
然後我被轉回編輯頁面中沒有錯誤。 D:
歡迎任何想法!我很困惑。
感謝Rushabh,但我真的不希望通過形式設置型 - 用於Rails的STI,在這種情況下,應自動處理。正如你在參數中看到的那樣,type實際上並沒有被設置。 – shalott
O nice .Apologies,因爲我不明白你的問題! –