2

リポジトリ型のRails3サイトをまとめています。Thinking Sphinx をインストールして自分のサイトで作業していlocalhost:3000/articles?search=test&page=2ます。

Rails (および一般的な Web 開発者) は初めてです。これのモデルとコントローラーの側面を管理できると思いますが、これまでのビューには困惑しています。検索インターフェイスとして使用したいサイドバーがあります。私が最も近いものはこれです(サイドバーのパーシャルの一部としてレンダリングされます):

<% form_tag @search, :method => :get do %> 
    <%= text_field_tag :search, params[:search] %> 
    <%= submit_tag "Search"%> 
<% end %>

検索メソッドは私の article#index コントローラーにあります。ブラウザーがそのページを指している ( としてルーティングされている) ときにテストすると、/articles期待どおりに動作しますが、この奇妙な url: localhost:3000/articles?utf8=✓&amp;search=test&commit=Search. ブラウザーが最初にルート パスをポイントしたときは、何も起こりません。

したがって、これらが私が対処する必要がある主な問題だと思います。

  1. 編集 - 解決済み (下記参照)
  2. 検索メソッドを独自のコントローラーに移動する必要がありますか、それとも記事コントローラーの一部にする必要がありますか? 今のところ、Article がインデックスされる唯一のモデルになります。
  3. 編集 - 解決済み (下記参照)
  4. Rails 3 と Thinking Sphinx を使用したファセット検索ビューの良いサンプル コードはありますか? 私が言ったように、私は初心者のようなもので、ビューの実装をざっと見たドキュメントに少し当惑しています。ただし、コードが十分に完成している限り、コードを読んで解釈することはかなり得意です。

前もって感謝します!

解決済み:

  1. 検索を試みる前に「検索」ボタンで index メソッドを呼び出すにはどうすればよいですか? (私はこれを に置き換えること@searchで解決しましたarticles_path)。

  2. 以前will_paginateは問題がありましたが、現在は機能しているようです。

4

1 に答える 1

3

ねえ、これは私がsolrに切り替える前に私のサイトがどのように機能していたかの抜粋です

製品には多くのカテゴリがあり、それらをファセットとしてインデックス付けすることを sphinx に伝えます。

class Product < ActiveRecord::Base {    
    has_many :categorisations, :dependent => :destroy
    has_many :categories, :through => :categorisations        

 define_index do
    indexes product_name,
    indexes description
    indexes categories(:name), :as => :category,:facet => true      
 end 
}

結果コントローラー

class ResultsController < ApplicationController
  def index
      @facets = Product.facets params[:qt], :conditions => {:category => params[:category}},:page => params[:page], :per_page => 20
      @products = @facets.for
  end
end

そして、ビューで次のようなことができます

<% @facets.each do |facet, facet_options| %>
  <span><%= facet %></span>
  <ul>
  <% facet_options.each do |option, count| %>
    <li><%= link_to "#{option} (#{count})",
      :params => {facet => option, :page => 1} %></li>
  <% end %>
  </ul>
<% end %>
于 2011-03-24T14:16:38.050 に答える