2009-09-17 4 views
8

J'ai un modèle User. Si je fais:Comment définir un chemin personnalisé dans les rails?

def my_action 
    @user = User.new 
end 

puis

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

Je reçois

undefined method `users_path' for #<ActionView::Base:0x1b4b878> 

Ce qui fait sens parce que je ne l'ai pas cartographié ça va map.resources :users. .. mais je ne veux pas faire de cette façon parce que je n'ai pas besoin de toutes les ressources.

Comment puis-je simplement définir cette méthode user_path dans mes itinéraires?

Répondre

5

Vous pouvez également customize restful routes. Par exemple dans mon application, seules les actions d'index et de show sont appropriées pour certains contrôleurs. Dans mon dossier routes.rb J'ai quelques itinéraires comme ceci:

map.resources :announcements, :only => [:index, :show] 

Vous pouvez également utiliser :except si c'est plus approprié.

3

Vous pouvez mapper des itinéraires personnalisés dans votre fichier routes.rb comme ça ...

map.users '/users', :controller => 'user', :action => 'index' 

Cela vous donne le vous aide users_path recherche.

+0

Merci. Est-ce une convention? Comme la route vers l'index est model_path? – marcgg

+0

Ceci est incorrect. Cela ne résoudra pas l'affichage du formulaire parce qu'il va à la mauvaise action. map.resources: users,: only => [: new,: create] est la convention appropriée. –

3

Depuis que je suis venu ici à la recherche d'un moyen de créer des aides à routes.rb, voici la façon de le faire:

get '/users/:id/' =>'users#show', :as => :user 
Questions connexes