我正在研究Ruby on rails 2.3.4,我正在尝试在我网站的搜索页面上开发一个排序功能(它的网址是/ anuncios / buscar)。
我尝试的是在路线文件上创建一个“地图”:
map.search_filter_relevance "/anuncios/buscar", :controller => 'announcements', :action => 'search_filter_relevance'
然后,我在视图上写了这个:
<%= link_to 'MÁS RELEVANTES', search_filter_relevance_path(@announcements) %>
最后,我在控制器中创建了一个方法,如路线':
中指定的那样 def search_filer_relevance
raise params.inspect
end
首先,当我对搜索结果进行排序时,我想将它们保存在名为@announcements的公共变量中。请帮我这样做。
另一件事是,当我点击链接时,我得到一个错误,因为它试图访问Show动作而不是路由中指定的search_filter_relevance。为什么会这样?
修改
似乎我在routes.rb文件中的某些行之间存在冲突。
有多条线路调用相同的路径。例如:
map.search "/anuncios/buscar", :controller => 'announcements', :action => 'search'
map.power_search "/anuncios/buscar", :controller => 'announcements', :action => 'power_search'
map.search_filter_relevance "/anuncios/buscar", :controller => 'announcements', :action => 'search_filter_relevance'
因此,如果我点击排序链接,我将被重定向到搜索操作,而不是'search_filter_relevance'。但是,如果我改变其路径(例如:“anuncios / buscar_2”),它将执行我想要的操作,但它会要求我为此创建一个模板“buscar_2”,我不想这样做此
我只想要一个链接按钮,单击该按钮时会对表进行排序。就是这样。
有什么想法吗?
答案 0 :(得分:1)
错误是因为路径助手方法是search_filter_relevance_path
。
您可以运行rake routes
查看您已设置的所有路线和方法。
至于排序,searchlogic已经存在,所以我必须有一个很好的理由重新发明轮子。