2009-11-19 107 views
2

我試圖創建一個允許管理員用戶更改其他用戶的指定角色的Rails表單。我創建的表單會向用戶註冊更改(如密碼或登錄更改),但不會將更改註冊到用戶的角色,這是一個單獨的模型。通過表單更改用戶角色

我正在使用Acl9進行基於角色的身份驗證,該身份驗證使用用戶模型,角色模型和鏈接這兩者的R​​oles_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?" %> 

加載頁面時,我沒有得到任何錯誤,但所選擇的角色沒有得到相關用戶。任何幫助,將不勝感激。謝謝!

回答

0

您可能想要使用Rails 2.3中新增的嵌套屬性。以下鏈接可幫助您入門。

+0

當我嘗試使用嵌套的屬性,我得到一個SQL異常: 「沒有這樣的列:users.user_id:SELECT * FROM 」用戶「 WHERE(」用戶「.user_id = 12)」。 將相關的代碼行從「user_form.fields_for」更改爲「fields_for」會照顧該錯誤,但會將我留在我開始的位置,並且選定的角色不與用戶關聯。 – 2009-11-19 22:36:37

相關問題