私は 2.3.11 Rails アプリを持っています。全文検索を追加して、「記事」のコンテンツとタイトルを検索できるようにしたいと考えています。この目的で Thinking-sphinx を使用しています。検索 link_to '/advanced_search' (ホームページ上) をクリックして検索フォームを表示できるようにしたいだけです。検索フォームが送信されたら、別のビュー search_results.html.erb に一致するリストを表示します。記事。
問題: ビューが実際にどのようにレンダリングされるかを本当に理解していないことがわかりました。また、ルーティングが正しいかどうかもわかりません。私はさまざまなことを試しましたが、何らかの理由で、そこにあるすべての例が異なっていました。
だから私は検索フォーム /controllers/articles_controller/advanced_search を持っています:
<% form_tag :controller => 'articles', :action => 'search', :method => 'get' do %>
<%= text_field_tag :search, params[:search], :id => 'search_field' %>
<%= submit_tag 'Search', :name => nil %>
<% end %>
そして、検索結果を表示するための 2 つ目のビュー /controllers/articles_controller/search_results.html.erb があります。
<% @articles.each do |article| %>
<li><%= link_to article.name, :action => 'show', :id => article.id %></li>
<li><%= article.archived? %></li>
<% end %>
これは、スフィンクスのインデックスを定義する私のモデルです。
class Article < ActiveRecord::Base validates_presence_of :name #残りの検証と関連付けはこちら
define_index do インデックス 要約インデックス :name end end
これは私のコントローラと新しい検索アクション /controllers/articles_controller:
class ArticlesController < ApplicationController
load_and_authorize_resource
def index @articles = Article.all
respond_to do |format|
format.html # index.html.erb
format.xml { render :xml => @articles }
format.json { render :json => @articles }
end
終わり
def search @articles = Article.search params[:search]
respond_to do |format|
format.html #
format.xml { render :xml => @articles }
format.json { render :json => @articles }
end
終了 終了
私のroutes.rbには、おそらく正しくないこの行がありますが、それを取り出すと、ルーティングエラー「No route matching "/advance_search" with {method => get}」が表示されます
map.connect 'advance_search', :controller => "articles, :action => search
他のすべてが正しいと仮定して、ビューを正しくレンダリングする方法についてのアイデアをいただければ幸いです。