0

私は 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

他のすべてが正しいと仮定して、ビューを正しくレンダリングする方法についてのアイデアをいただければ幸いです。

4

1 に答える 1

0

私を混乱させた問題の1つは、ネストされたルーティングが使いすぎだと思うという事実でした。私は今のところこの問題を回避する方法を見つけました。同じ質問をする人には正直な答えを残したかったのですが、残念ながら、まったく別の方法で行ったため、私の解決策ではこの特定の質問に答えることができません。しかし、実際に答えられた他の同様の質問があることに後で気づきました。

于 2012-04-09T19:51:14.600 に答える