2

好吧,我有一個圖形模型,我正在使用思維獅身人面像作爲搜索工具。它運作良好,但我想在搜索結果頁面上顯示不同的模式。例如思維獅身人面像顯示選項

我有這個在我的圖形模型

define_index do 
indexes :name, :description, :scale, 
indexes sub_category.name, :as => :subcategory_name 
indexes sub_category.category.name, :as => :category_name 
indexes colors.name, :as => :color_name 
end 

這是優秀和良好,但問題是我想顯示找到的搜索的所有類別和子類別,而不僅僅是相關的圖形。在我的控制,我應該有三個發現像

@graphics = Graphic.search params[:search] 
@categories = Categories.search params[:search] 
@sub_categories = SubCategories.search params[:search] 

這似乎有點小題大做......有沒有更好的方式,以便在視圖中我可以告訴他們每個人的seperately

回答

4

你需要有指標在您的類別和子類別車型定義爲好,然後就可以在所有三個一次搜索:

@results = ThinkingSphinx.search params[:search], :page => params[:page] 

在你看來,你會希望身邊每個搜索結果的一些邏輯來呈現正確的HTML - 也許你每個班級可以有不同的部分?我也建議把它包裝成一個幫手。這裏是一個開始:

<ul> 
    <% @results.each do |result| %> 
    <li><%= render :partial => partial_for_search_result(result), 
       :locals => {:result => result} %></li> 
    <% end %> 
</ul> 

和輔助:

def partial_for_search_result(result) 
    case result 
    when Graphic 
    'graphics/search_result' 
    when Category 
    'categories/search_result' 
    when SubCategory 
    'sub_categories/search_result' 
    else 
    raise "Unknown search result/partial mapping for #{result.class}" 
    end 
end 

但願這給你如何解決這個問題的一些想法。

0

只是爲了縮短例如,你可以這樣做:

在控制器

@results = ThinkingSphinx.search params[:search], :page => params[:page] 

鑑於

= render @results 

應該調用每個模型的部分 '圖形/ _graphic.html.erb',' categories/_category.html.erb'等等