我正在使用Ruby on rails 2.3.4,我希望有一个链接,在点击时执行一个动作。
routes.rb文件的相关部分如下所示:
map.search_filter_relevance "/anuncios/buscar", :controller => 'announcements', :action => 'search_filter_relevance'
我的观点(这是模型的索引页面)如下所示:
<%= link_to 'MÁ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
问题是当我点击链接时,由于Show动作中的某些空值,我得到一个错误!我根本没有访问那个动作......为什么要执行它?
修改
以下是路线输出:
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"}
答案 0 :(得分:1)
在routes.rb文件中尝试此代码
map.resources :announcements,:collection=>{:search_filter_relevance=>:get}
并且,在routes.rb文件中注释以下代码行
map.search_filter_relevance "/anuncios/buscar", :controller => 'announcements', :action => 'search_filter_relevance'
答案 1 :(得分:0)
当你进入控制台并
rake routes
你可以粘贴所有有search_filter_relevance和anuncios的行吗?
<强>更新强> 由于您要在公告控制器中调用 search_filter_relevance 操作,因此您需要使用列出的路线 search_filter_relevance_announcements_path
<%= link_to 'MÁS RELEVANTES', search_filter_relevance_announcements_path %>
另一个选择是手动指定控制器和操作
<%= link_to 'MÁS RELEVANTES', {:controller => "announcements", :action => "search_filter_relevance"} %>