gpt4 book ai didi

ruby-on-rails - 带复选框的嵌套对象 - 即使使用 Accept_nested_attributes_for 也可以进行批量分配?

转载 作者:行者123 更新时间:2023-12-02 23:50:39 24 4
gpt4 key购买 nike

鉴于 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com