2009-11-19 6 views
2

J'essaie de créer un formulaire Rails qui permet à un utilisateur admin de modifier les rôles attribués aux autres utilisateurs. Le formulaire que j'ai créé enregistre les modifications apportées à l'utilisateur (telles que les modifications de mot de passe ou de connexion), mais n'enregistre pas les modifications apportées au rôle de l'utilisateur, qui est un modèle distinct. J'utilise Acl9 pour l'authentification basée sur les rôles, qui utilise un modèle utilisateur, un modèle de rôle et un modèle Roles_user qui relie les deux.Modification des rôles utilisateur via un formulaire

Voici le code que j'ai sous ma forme:

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

Je ne reçois pas d'erreur lors du chargement de la page, mais le rôle sélectionné ne sont pas associés à l'utilisateur. Toute aide serait appréciée. Merci!

Répondre

0

Vous souhaitez probablement utiliser des attributs imbriqués, ce qui est nouveau dans Rails 2.3. Les liens suivants devraient vous aider à démarrer.

+0

Lorsque je tente d'utiliser des attributs imbriqués, je reçois une exception SQL: "pas de colonne: utilisateurs.id_utilisateur: SELECT * FROM "utilisateurs" WHERE (" utilisateurs ".user_id = 12)." La modification de la ligne de code appropriée de "user_form.fields_for" à "fields_for" prend soin de l'erreur, mais me laisse là où j'ai commencé, le rôle sélectionné n'étant pas associé à l'utilisateur. –

Questions connexes