Как добавить параметр в метод / метод индекса index? - PullRequest
7 голосов
/ 20 марта 2012

Я хочу передать параметр в действие index, но я получаю только действие show.

rout.rb:

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

blog_controller.rb:

  def show
    # code
  end

  def index
    # code
  end

Просмотр URL, который отправляется для показа действия вместо действия индекса:

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

Что я должен добавить в файл маршрутов или в представление?

Вывод моих маршрутов:

$ rake routes

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

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

Ответы [ 3 ]

9 голосов
/ 20 марта 2012

Командная строка покажет вам маршруты, которые вы можете использовать с rake routes

Маршрут, который вам нужен, это blogs_path, и вы можете добавить к нему параметр, например, blogs_path(other_item => :value).

Как именно это будет зависеть от того, пытаетесь ли вы использовать его в контроллере, в другом представлении и т. Д.

Для просмотра есть: <%= link_to 'My Link', blogs_path(:other_item => value) %>

1 голос
/ 09 января 2017

Используйте следующий код для передачи параметра:

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

или

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

код выше будет перенаправлен на действие индекса с именем в качестве ключа и тестом в качестве параметра,

1 голос
/ 26 августа 2013

Звучит так, как будто вы хотите 2 маршрута:

/blogs/:other_param
/blogs/:id

Но, несмотря на то, что такой умный, как Rails, он не может понять, должен ли параметр рассматриваться как other_param или как id.

Итак, самое простое решение - добавить этот маршрут к ресурсам по умолчанию следующим образом:

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

Таким образом, Rails знает, что если вы перейдете в / blogs / other_param / current, то он будет обрабатывать current как: other_param.

...