2009-10-28 4 views

Répondre

2

Je tiens à préciser que si vous pointez/livres vers/livres/nouveau, vous allez confondre toute personne qui attend REST. Si vous ne travaillez pas seul, ou si vous en avez d'autres à venir plus tard, ou si vous prévoyez d'exposer une API à l'extérieur, la convention REST est que/books vous amène à une liste,/books/new est où vous créez un nouvel enregistrement.

+6

En fait, c'est une convention Rails, pas une convention REST. En fait, tout client qui tire parti de cette convention pour construire des URL enfreint la contrainte d'auto-description REST en utilisant des connaissances hors bande. –

0

Oui. Vous devriez être en mesure de remplacer votre méthode d'index dans votre contrôleur ...



def index 
    @resource = Resource.new 
    # have your index template with they proper form 
end 

+0

Cela ne change pas l'action par défaut, c'est-à-dire que l'index fait quelque chose de différent de la liste. – Pablo

+0

Oui, mais c'est très préférable. Il est facile de changer l'action à travers les routes mais ce serait une mauvaise idée de le faire. – allesklar

2

Je ne sais pas pourquoi voudriez-vous faire une telle chose, mais il suffit d'ajouter ce

map.connect "/books", :controller => "books", :action => "new", :conditions => { :method => :get} 

à votre config/routes.rb avant le

map.resources :books 

et cela devrait fonctionner.

0

Dans la même veine, vous pouvez juste faire

def index 
    show 
end 
0
def index 
    redirect_to new_book_path 
end 

Je pense que ce serait le moyen le plus simple.

Questions connexes