2009-09-17 10 views
8

Ich habe ein Benutzermodell. Wenn ich das tue:Wie definiere ich einen benutzerdefinierten Pfad in Schienen?

def my_action 
    @user = User.new 
end 

dann

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

I

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

erhalten, die Sinn machen, weil ich nicht zugeordnet haben es map.resources :users. gehen .. aber ich will nicht tun es auf diese Weise, weil ich nicht alle Ressourcen brauche.

Wie kann ich diese Methode user_path in meinen Routen definieren?

Antwort

5

Sie können auch customize restful routes. Zum Beispiel sind in meiner Anwendung nur die Index- und Show-Aktionen für bestimmte Controller geeignet. In meiner routes.rb Datei habe ich einige Routen wie folgt aus:

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

Sie auch :except verwenden können, wenn das besser geeignet ist.

3

Sie können benutzerdefinierte Routen in Ihrer routes.rb Datei wie folgt ...

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

Dies gibt Ihnen die users_path Helfer Sie suchen Karte.

+0

Dank. Ist das eine Konvention? Wie die Route zum Index ist Model_path? – marcgg

+0

Dies ist falsch. Dies wird die Formularbuchung nicht lösen, da es zur falschen Aktion geht. map.resources: users,: only => [: new,: create] ist die geeignete Konvention. –

3

Seit ich hierher kam, nach einem Weg suchen Helfer in routes.rb zu schaffen, hier ist der Weg, es zu tun:

get '/users/:id/' =>'users#show', :as => :user 
Verwandte Themen