【问题标题】:Thinking Sphinx display options思考狮身人面像显示选项
【发布时间】:2011-01-22 04:59:48
【问题描述】:

好的,所以我有一个图形模型,我正在使用思考狮身人面像作为搜索工具。它工作得很好,但我想在搜索结果页面上显示不同的模型..例如

我的图形模型中有这个

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]

这似乎有点矫枉过正......有没有更好的方法,所以在视图中我可以分别显示它们中的每一个

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-3 activerecord thinking-sphinx


    【解决方案1】:

    您还需要在 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
    

    希望这能给您一些关于如何解决问题的想法。

    【讨论】:

      【解决方案2】:

      只是为了缩短你可以做的例子:

      在控制器中

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

      在视图中

      = render @results
      

      应该调用每个模型部分'graphic/_graphic.html.erb'、'categories/_category.html.erb'等等

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-10-03
        • 2012-03-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多