Tôi nghĩ rằng cần phải có một giải pháp đơn giản cho điều này, vì Rails 2.3 có tính năng biểu mẫu lồng nhau mới lạ này. Về cơ bản tôi muốn tạo hoặc cập nhật một người dùng và gán cho họ vai trò cùng một lúc.Đối tượng lồng nhau w/Hộp kiểm - chuyển nhượng hàng loạt ngay cả với accept_nested_attributes_for?
Có vẻ như tôi đang làm mọi thứ đúng nhưng tôi gặp lỗi CẢNH BÁO: Không thể chỉ định khối lượng các thuộc tính được bảo vệ này: roles_attrributes.
Tôi thậm chí đã thử thay đổi chế độ xem thành người dùng [permissions_attrributes] [role_id] vì tôi nghĩ rằng có thể bảng tham gia đã gây nhầm lẫn Rails.
Dù sao, bất kỳ đề xuất nào về cách thức này thực sự hoạt động?
Mẫu
class User < ActiveRecord::Base
has_many :permissions
has_many :roles, :through => :permissions
accepts_nested_attributes_for :roles
accepts_nested_attributes_for :permissions
end
Trích từ xem (chú ý tôi đã cố gắng và thất bại để có được fields_for để tạo ra những gì tôi muốn ở đây, có lẽ đó là vấn đề của tôi?)
<% for role in Role.all %>
<%= check_box_tag("user[roles_attrributes][id]",role.id) %>
<%= role.rolename %>
<br/>
<% end %>
Params tới trên dường như là bên phải:
{"user"=>{"password_confirmation"=>"[FILTERED]",
"roles_attrributes"=>{"id"=>"2"}, ...
Giải pháp Một sự kết hợp của tôi sai chính tả, không sử dụng attr_accessible, cần phải truy cập permissions_attributes, và các hình thức được tắt một chút.
mẫu:
has_many :permissions, :dependent => :destroy
has_many :roles, :through => :permissions
accepts_nested_attributes_for :permissions
attr_accessible :permissions_attributes
Xem:
<% 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 %>
Tôi hiểu rằng accept_nested_attributes_for không yêu cầu điều đó. Dù sao, tôi đã thử cả hai và không làm việc. – Bill
Thông báo lỗi đó chắc chắn là một thông báo gây ra bởi sự cố attr_protected hoặc attr_accessible. Ngoài ra http://apidock.com/rails/ActiveRecord/NestedAttributes/ClassMethods/accepts_nested_attributes_for cho biết đó là điều cần lưu ý ngay cả với ANAF. Có thể đáng xem xét kỹ hơn? –