作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
鉴于 Rails 2.3 具有这种新奇的嵌套表单功能,我认为应该有一个简单的解决方案。基本上我想创建或更新用户并同时为他们分配角色。
看起来我做的一切都是正确的,但我收到错误警告:无法批量分配这些 protected 属性:roles_attrributes。
我什至尝试将 View 更改为 user[permissions_attrributes][role_id] 因为我认为连接表可能会让 Rails 感到困惑。
无论如何,关于这应该如何实际工作有什么建议吗?
型号
class User < ActiveRecord::Base
has_many :permissions
has_many :roles, :through => :permissions
accepts_nested_attributes_for :roles
accepts_nested_attributes_for :permissions
end
摘录自 View (请注意,我尝试让 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、需要访问permissions_attributes以及表单略有偏差的组合。
型号:
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 %>
最佳答案
如果您更正 check_box_tag
中属性的拼写,看起来应该可以正常工作。
<% for role in Role.all %>
<%= check_box_tag( "user[roles_attributes][id]",role.id) %>
<%= role.rolename %>
<br/>
<% end %>
关于ruby-on-rails - 带复选框的嵌套对象 - 即使使用 Accept_nested_attributes_for 也可以进行批量分配?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/727300/
我是一名优秀的程序员,十分优秀!