2010-08-22 4 views
1

Je suis nouveau à Rails.Comment puis-je avoir plusieurs formulaires pour mettre à jour le même modèle?

J'ai un modèle d'utilisateur. Je voudrais une page Web qui permet aux utilisateurs de changer leur: nom et: email, et une autre page Web qui leur permet de changer leur mot de passe.

En ce moment, j'ai un formulaire pour modifier: nom et: courriel à

/users/1/edit 

Le formulaire sur la page est

<%= form_for(@user) do |f| %> 

Mon routes.rb a

resources :users 

Cela fonctionne. Les utilisateurs peuvent modifier leur: nom et: email très bien. Comment puis-je configurer une autre page Web avec un autre formulaire qui leur permet de changer leur mot de passe?

Merci.

Répondre

0

Vous pouvez définir les actions que vous souhaitez dans votre contrôleur. Les opérations CRUD par défaut sont là pour couvrir les bases, mais il n'y a aucune limite inhérente à ce que vous pouvez faire.

#controller: 
def change_password 
    render :action => "change_password" 
end 

#routes: 
map.resource :users, :member => {:change_password => :get} 

#view: 
<%= form_for(@user) do |f| %> 

ci-dessus créeraient la route: /users/1/change_password

Dans la vue que vous avez simplement les champs de mot de passe de changement => la forme reste fondamentalement la même, soumettre à votre mise à jour existante action.

+0

Merci, Toby. J'utilise Rails 3 donc la syntaxe est un peu différente, mais c'était assez de pointeur pour me lancer. – Sanjay

0

par le commentaire de Sanjay concernant la réponse de Toby (et pour sauver quelqu'un les quelques minutes que je prenais pour le comprendre) dans Rails 3, vous définiriez les routes avec:

#routes: 
resources :users do 
member do 
    get 'change_password' 
end 
end 
Questions connexes