簡體   English   中英

思維獅身人面像的顯示選項

[英]Thinking Sphinx display options

好的,我有一個圖形模型,正在使用獅身人面像作為搜索工具。 它工作正常,但我想在搜索結果頁面上顯示不同的模型。

我的圖形模型中有這個

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]

這似乎有點過分...是否有更好的方法,以便在視圖中我可以分別顯示每個視圖

您還需要在Category和SubCategory模型中定義索引,然后可以一次搜索所有三個:

@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

希望這給您一些有關如何解決問題的想法。

為了簡化示例,您可以執行以下操作:

在控制器中

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

鑒於

= render @results

應該將每個模型的部分稱為“ graphic / _graphic.html.erb”,“ categories / _category.html.erb”,依此類推

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM