मैंने सोचा कि इसके लिए एक आसान समाधान होना चाहिए था, यह देखते हुए कि रेल 2.3 में इस नए घोंसले वाले रूपों की सुविधा है। असल में मैं उपयोगकर्ता को बनाना या अपडेट करना चाहता हूं और उन्हें एक ही समय में भूमिका निभाना चाहता हूं।नेस्टेड ऑब्जेक्ट w/चेकबॉक्स - accepts_nested_attributes_for के साथ भी बड़े पैमाने पर असाइनमेंट?
ऐसा लगता है कि मैं सब ठीक कर रहा हूं लेकिन मुझे त्रुटि मिलती है चेतावनी: इन संरक्षित विशेषताओं को बड़े पैमाने पर असाइन नहीं किया जा सकता: roles_attrributes।
मैंने उपयोगकर्ता [permissions_attrributes] [role_id] को दृश्य बदलने की भी कोशिश की क्योंकि मैंने सोचा था कि शायद शामिल तालिका रेल को भ्रमित कर रही थी।
वैसे भी, यह वास्तव में कैसे काम करना चाहिए इस पर कोई सुझाव?
मॉडल
class User < ActiveRecord::Base
has_many :permissions
has_many :roles, :through => :permissions
accepts_nested_attributes_for :roles
accepts_nested_attributes_for :permissions
end
दृश्य से अंश (नोटिस मैंने कोशिश की और fields_for प्राप्त करने के लिए उत्पन्न करने के लिए क्या मैं यहाँ चाहते विफल रहा है, हो सकता है कि मेरी समस्या है?)
<% for role in Role.all %>
<%= check_box_tag("user[roles_attrributes][id]",role.id) %>
<%= role.rolename %>
<br/>
<% end %>
पैरामीटर भर में आने वाले होने लगते हैं सही:
{"user"=>{"password_confirmation"=>"[FILTERED]",
"roles_attrributes"=>{"id"=>"2"}, ...
समाधान मेरा एक संयोजन गलत वर्तनी है, attr_accessible का उपयोग नहीं कर रहा है, अनुमतियों को एक्सेस करने की आवश्यकता है, और फॉर्म थोड़ा सा है।
मॉडल:
has_many :permissions, :dependent => :destroy
has_many :roles, :through => :permissions
accepts_nested_attributes_for :permissions
attr_accessible :permissions_attributes
दृश्य:
<% Role.all(:order => "rolename ASC").each_with_index do |role,idx| %>
<%= check_box_tag("user[permissions_attributes][#{idx}][role_id]",role.id) %>
<%= role.rolename %>
<br/>
<% end %>
यह मेरी समझ थी कि accepts_nested_attributes_for की आवश्यकता नहीं थी। वैसे भी, मैंने दोनों की कोशिश की है और न ही काम किया है। – Bill
वह त्रुटि संदेश निश्चित रूप से एक है जो एक attr_protected या attr_accessible समस्या के कारण होगा। इसके अलावा http://apidock.com/rails/ActiveRecord/NestedAttributes/ClassMethods/accepts_nested_attributes_for इंगित करता है कि एएनएएफ के साथ भी कुछ पता होना चाहिए। संभवतः एक करीब देखो लायक है? –