如何将集合传递给控制器​​的动作(而不是通过GET)

时间:2010-06-09 13:20:27

标签: ruby-on-rails

我正在使用Ruby on rails 2.3.8,其目的是为搜索结果实现“排序”功能。

我有了观点(这是其中的一部分):

<span>Sort by:</span>&nbsp;&nbsp; <%=  link_to 'MORE RELEVANT', search_filter_relevance_path %>

路由文件:

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

和控制器的动作(到目前为止无所作为):

  def search_filter_relevance
    raise params.inspect
  end

在搜索公告时,我想将其结果集合传递给控制器​​的操作,以便过滤它们,而不是所有公告。

我该怎么做?

1 个答案:

答案 0 :(得分:1)

你的问题有点不完整。如果您能提供整个控制器代码的详细信息,那就太棒了。我仍然会尝试回答它。 更好的方法是通过“搜索术语”本身。假设搜索词存储在实例变量@search中。

你的link_to应该是:

<%= link_to 'MORE RELEVANT', search_filter_relevance_path(:search => @search) %>

你的路线应该是:

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

和你的行动:

def search_filter_relevance
  #You can access the search term using params[:search] and then reproduce the search results in a filtered form!
  #Example: If you using acts_as_solr to search your table(s).. (Can be applied to any other FTS plugin)
  #This sorts the results in ascending order
  #@result = Model.find_by_solr(params[:search], :order => "created_at ASC")
end