2

管理者ユーザーが他のユーザーの割り当てられたロールを変更できるようにする Rails フォームを作成しようとしています。私が作成したフォームは、ユーザーへの変更 (パスワードやログインの変更など) を登録しますが、別のモデルであるユーザーのロールへの変更を登録しません。

私はロールベースの認証に Acl9 を使用しています。これは、User モデル、Role モデル、および 2 つをリンクする Roles_user モデルを使用します。

私のフォームにあるコードは次のとおりです。

<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?" %>

ページのロード時にエラーは発生しませんが、選択したロールがユーザーに関連付けられません。どんな助けでも大歓迎です。ありがとう!

4

1 に答える 1

0

Rails2.3の新機能であるネストされた属性を使用することをお勧めします。次のリンクは、始めるのに役立ちます。

于 2009-11-19T21:39:56.933 に答える