7

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

routes.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"} 
+0

не уверен, если я понимаю, , вы хотите передать параметр в действие индекса? – c0deNinja

+0

Да, чтобы индексировать действие, если у вас есть другой способ, напишите – Yosef

ответ

9

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

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

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

Для зрения есть: <%= link_to 'My Link', blogs_path(:other_item => value) %>

+0

, пожалуйста, см. Мое редактирование – Yosef

+0

, пожалуйста, просмотрите мои выходные маршруты в редакции. Я пытаюсь сделать blogs_path ('myparam' =>: value), но требуется, чтобы показать действие – Yosef

+0

снова обновил ответ. –

1

Это звучит, как вы хотите 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 знает, что если вы собираетесь в/блог/other_param/ток, то он будет относиться к текущему как: other_param.

1

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

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

или

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

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

 Смежные вопросы

  • Нет связанных вопросов^_^