如何编写排序功能

时间:2010-05-20 14:09:14

标签: ruby-on-rails

我正在研究Ruby on rails 2.3.4,我正在尝试在我网站的搜索页面上开发一个排序功能(它的网址是/ anuncios / buscar)。

我尝试的是在路线文件上创建一个“地图”:

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

然后,我在视图上写了这个:

<%=  link_to 'M&Aacute;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”,我不想这样做此

我只想要一个链接按钮,单击该按钮时会对表进行排序。就是这样。

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

错误是因为路径助手方法是search_filter_relevance_path

您可以运行rake routes查看您已设置的所有路线和方法。

至于排序,searchlogic已经存在,所以我必须有一个很好的理由重新发明轮子。