2010-11-18 16 views
6

Nie mogę wymyślić, jak to zrobić w szynach 3.0. Mam kontroler, products i działania, search, aw routes.rb PróbowałemKonfiguracja niezamkniętych tras

resources :products, :collection => {:search => :post } 

i

match 'products/search' => 'products#search', :via => [:get, :post] 

i wiele innych ustawień, ale gdy mam dostępu products/search nadal pojawia się błąd narzekając, że produkt o identyfikatorze, search, nie może zostać znaleziony dla działania show. Czy ktoś wie, co robię źle?

Dzięki.

Odpowiedz

10

Jesteś blisko.

resources :products do 
    collection do 
    match 'search', :via => [:get, :post] 
    end 
end 

Alternatywnie, można również zrobić:

resources :products do 
    match 'search', :on => :collection, :via => [:get, :post] 
end 

Zobacz Rails Routing from the Outside In od prowadnice krawędzi, aby uzyskać więcej informacji, a dokładniej:

+1

Wow, nie wiem, jak przeoczyłem tę część strony "routing from outside in". Niesamowite. Dzięki, chłopaki, to zadziałało. – user508546

+0

Brak prob. Cieszę się, że mogliśmy pomóc. =) Szkoda, że ​​nie możesz oznaczyć naszych jako odpowiedzi. = D – John

4

W Rails 3, collection jest teraz blok:

resources :products do 
    collection do 
    get :search 
    post :search 
    end 
end 

To pozwoli na dostęp do działania ProductsController#search używając do tego żądania GET lub POST.