2009-09-17 8 views
8

Mam model użytkownika. Jeśli mam zrobić:Jak zdefiniować niestandardową ścieżkę w szynach?

def my_action 
    @user = User.new 
end 

następnie

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

uzyskać

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

Które sensu bo nie odwzorowany idzie map.resources :users. .. ale nie chcę robić to w ten sposób, ponieważ nie potrzebuję wszystkich zasobów.

Jak mogę po prostu zdefiniować tę metodę user_path na moich trasach?

Odpowiedz

5

Możesz również customize restful routes. Na przykład w mojej aplikacji tylko indeks i akcje pokazują są odpowiednie dla niektórych kontrolerów. W moim pliku routes.rb mam kilka tras tak:

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

Można również użyć :except jeśli jest to bardziej odpowiednie.

3

Można map niestandardowych tras w pliku routes.rb jak to ...

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

To daje users_path pomocnika, którego szukasz.

+0

Dzięki. Czy to jest konwencja? Podobnie jak w przypadku trasy do indeksu jest ścieżka_model? – marcgg

+0

To jest nieprawidłowe. Nie rozwiąże to problemu z wysłaniem formularza, ponieważ prowadzi do niewłaściwego działania. map.resources: users,: only => [: new,: create] to odpowiednia konwencja. –

3

Odkąd przybył tu w poszukiwaniu sposobu na stworzenie pomocników w routes.rb, tutaj jest sposób, aby to zrobić:

get '/users/:id/' =>'users#show', :as => :user 
Powiązane problemy