Ссылка перенаправляет на «показывать» действие вместо указанного в маршрутах. - PullRequest
0 голосов
/ 20 мая 2010

Я работаю с Ruby на рельсах 2.3.4 и мне нужна ссылка, которая выполняет действие при нажатии.

Соответствующая часть файлаways.rb выглядит следующим образом:

map.search_filter_relevance "/anuncios/buscar", :controller => 'announcements', :action => 'search_filter_relevance'

Мой вид (это индексная страница модели) выглядит следующим образом:

<%=  link_to 'M&Aacute;S RELEVANTES', search_filter_relevance_path %>

И мой контроллер выглядит так:

  def search_filter_relevance
    raise params.inspect
    unless params[:announcements].nil? or params[:announcements].empty?
      @announcements = params[:announcements].order_by_featured

    end
  end

Проблема в том, что при нажатии на ссылку я получаю сообщение об ошибке из-за некоторого нулевого значения в действии Показать! Я вообще не получаю доступ к этому действию ... зачем его выполнять?

EDIT:

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

search_filter_relevance_announcements GET    /anuncios/search_filter_relevance(.:format)        {:controller=>"announcements", :action=>"search_filter_relevance"}
                        announcements GET    /anuncios(.:format)                                {:controller=>"announcements", :action=>"index"}
                                      POST   /anuncios(.:format)                                {:controller=>"announcements", :action=>"create"}
                     new_announcement GET    /anuncios/new(.:format)                            {:controller=>"announcements", :action=>"new"}
                    edit_announcement GET    /anuncios/:id/edit(.:format)                       {:controller=>"announcements", :action=>"edit"}
                         announcement GET    /anuncios/:id(.:format)                            {:controller=>"announcements", :action=>"show"}
                                      PUT    /anuncios/:id(.:format)                            {:controller=>"announcements", :action=>"update"}
                                      DELETE /anuncios/:id(.:format)                            {:controller=>"announcements", :action=>"destroy"}
                               search        /anuncios/buscar                                   {:controller=>"announcements", :action=>"search"}
                         power_search        /anuncios/buscar                                   {:controller=>"announcements", :action=>"power_search"}

Ответы [ 2 ]

1 голос
/ 20 мая 2010

Попробуйте этот код в вашем файле rout.rb

 map.resources :announcements,:collection=>{:search_filter_relevance=>:get}

И, прокомментируйте приведенную ниже строку кода в вашем файле rout.rb

map.search_filter_relevance "/anuncios/buscar", :controller => 'announcements', :action => 'search_filter_relevance'
0 голосов
/ 20 мая 2010

Когда вы заходите в консоль и

rake routes

Вы можете вставить все строки, которые имеют search_filter_relevance, а также anuncios?

Обновлен: Поскольку вы хотите вызвать действие search_filter_relevance в контроллере messages , вам нужно будет использовать указанный маршрут search_filter_relevance_announcements_path

<%=  link_to 'M&Aacute;S RELEVANTES', search_filter_relevance_announcements_path %>

Еще один вариант - указать контроллер и действие вручную

<%=  link_to 'M&Aacute;S RELEVANTES', {:controller => "announcements", :action => "search_filter_relevance"} %>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...