7

Chcę przekazać parametr do akcji indeksu, ale otrzymuję tylko akcję pokazu.Jak dodać parametr do metody/metody indeksowania szyn?

routes.rb:

Test1::Application.routes.draw do 
    resources :blog 
end 

blog_controller.rb:

def show 
    # code 
    end 

    def index 
    # code 
    end 

zobaczyć URL, które wysyłają, aby pokazać działanie zamiast do działania index:

<a href="/blog/myvar"> My link </a> 

Co należy dodać w plik tras lub w widoku?

Wyjście z moich trasach:

$ rake routes 

blog GET /blog(.:format)   {:action=>"index", :controller=>"blog"} 

blog GET /blog/:id(.:format)  {:action=>"show", :controller=>"blog"} 
+0

nie jestem pewien, czy rozumiem . chcesz przekazać parametr do akcji indeksu? – c0deNinja

+0

Tak, aby indeksować akcję, jeśli masz inny sposób, napisz – Yosef

Odpowiedz

9

Linia poleceń pokaże trasy można skorzystać z rake routes

Trasa chcesz to blogs_path i można dodać parametr na to, że, na przykład blogs_path(other_item => :value).

Dokładnie jak będzie zależeć od tego, czy staramy się używać go w kontrolerze, innego widoku, itp

Do widzenia mają: <%= link_to 'My Link', blogs_path(:other_item => value) %>

+0

, zobacz moją edycję – Yosef

+0

Proszę zobaczyć wyniki moich tras w edycji. Próbuję zrobić blogs_path ('myparam' =>: value), ale trzeba, aby akcja – Yosef

+0

zaktualizowała odpowiedź ponownie. –

1

Brzmi jak chcesz 2 trasy:

/blogs/:other_param 
/blogs/:id 

Ale tak samo inteligentne jak Railsy nie mogą określić, czy dany parametr ma być traktowany jako inny_param, czy jako identyfikator.

więc najprostszym rozwiązaniem jest dodanie tej trasy do domyślnych zasobów tak:

resources :blogs 
get "/blogs/other_param/:other_param", to: "blogs#index", as: "other_param_blogs" 

ten sposób Rails wie, że jeśli masz zamiar/blogi/other_param/prąd, to będą traktować prąd jako: other_param.

1

skorzystać z poniższego kodu, aby przekazać parametr:

<a href="/blog?name=test">My link </a> 

lub

<%= link_to "My link", blog_path(name: "test") %> 

powyżej kodu odsyła do działania indeksu z nazwy jako klucz i testu jako parametru