Ruby on rails 通过表单更改用户角色

Ruby on rails 通过表单更改用户角色,ruby-on-rails,authentication,roles,acl9,Ruby On Rails,Authentication,Roles,Acl9,我正在尝试创建一个Rails表单,允许管理员用户更改其他用户分配的角色。我创建的表单注册用户的更改,如密码或登录更改,但不注册用户角色的更改,这是一个单独的模型 我使用Acl9进行基于角色的身份验证,它使用一个用户模型、一个角色模型和一个链接这两者的Roles\u用户模型 以下是我表格中的代码: <h1>Edit User</h1> <% form_for(@user) do |form| %> <%= error_messages_for :user

我正在尝试创建一个Rails表单,允许管理员用户更改其他用户分配的角色。我创建的表单注册用户的更改,如密码或登录更改,但不注册用户角色的更改,这是一个单独的模型

我使用Acl9进行基于角色的身份验证,它使用一个用户模型、一个角色模型和一个链接这两者的Roles\u用户模型

以下是我表格中的代码:

<h1>Edit User</h1>

<% form_for(@user) do |form| %>
<%= error_messages_for :user %>
Login:                  <%= form.text_field :login %><br />
Password:               <%= form.password_field :password %><br />
Password Confirmation:  <%= form.password_field :password_confirmation %><br />

<% if current_user && current_user.has_role?(:admin) %>
    <%= error_messages_for :roles %>
    <% fields_for :roles do |role| %>
    <%= 
        @roles = Role.find(:all, :order => "name").map {|u| [u.name, u.id] }
        role.select(:id, @roles )
    %>
    <% end %>
   <% end %>
  <%= form.submit "Update" %>
<% end %>

<br />

<%= link_to "My Profile", account_path %>
<%= link_to "Logout", user_session_path, :method => :delete, :confirm => "Are you sure you want to logout?" %>

加载页面时我没有收到任何错误,但所选角色没有与用户关联。任何帮助都将不胜感激。谢谢

您可能希望使用嵌套属性,这在Rails 2.3中是新的。以下链接应该可以帮助您开始


您可能希望使用嵌套属性,这在Rails 2.3中是新的。以下链接应该可以帮助您开始


当我尝试使用嵌套属性时,我得到一个SQL异常:没有这样的列:users.user\u id:SELECT*FROM users.user\u id=12的用户。将相关的代码行从user_form.fields_for更改为fields_for会处理错误,但会使我返回到开始的位置,所选角色与用户不关联。当我尝试使用嵌套属性时,会出现SQL异常:无此类列:users.user_id:SELECT*from users.user_id=12的用户。将相关代码行从user_form.fields_for更改为fields_for会处理错误,但会使我回到开始的位置,所选角色不会与用户关联。