2010-06-09 27 views
0

我正在使用Ruby on rails 2.3.8,並且想法是爲搜索結果實現「排序」功能。如何將集合傳遞給控制器​​的動作(而不是GET)

我有看法(這是它的一部分):

<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 

作爲對公告的搜索,我想將其結果集合傳遞給控制器​​的操作,以便過濾它們, d不是所有的公告。

我該怎麼做?

+0

所以,你想傳遞一些從已經渲染的視圖返回到它的控制器? – 2010-06-09 13:24:01

+0

我想在Sort link_to被點擊時將當前搜索結果傳遞給控制器​​的操作,以便我可以對它們進行過濾。 – 2010-06-09 13:29:44

+3

這是一個錯誤的方法。您必須從search_filter_relevance方法的原點再次獲取所有搜索結果。 – 2010-06-09 13:50:59

回答

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 
+0

我正在考慮做這樣的事情,但問題是我沒有收到params [:search](我的代碼中的params [:announcements])中的公告集合,但是我收到了他們的永久鏈接。例如,我得到這些參數:{「controller」=>「announcements」,「action」=>「search_filter_relevance」,「announcements」=>「anuncio-3/apoyo-en-cbc/anuncio-tags-con-plugin/prueba-delta-1「}我怎樣才能得到公告的收集? – 2010-06-09 13:55:30

+2

Brian在這裏指出,你不應該將視圖中的集合傳遞給控制器​​。 您應該維護搜索查詢。 例如。如果有人在文本框中發現了輸入「blah」的公告,那麼您的訂購鏈接應該再次將查詢傳遞給控制器​​,以便控制器再次從數據庫中搜索並對其進行分類。 – robertokl 2010-06-09 17:45:53

+0

好吧,我會試試這個,讓你知道。謝謝 – 2010-06-09 17:48:08

相關問題