2012-04-13 12 views
0

search_field_tagでsearch_pathを呼び出すと、 "No route matches"エラーが表示されます。検索フォームは私の見出しの中にあり、アイデアは単にイベントの検索を行うことができるということです。ここでRails 3セグメントキーを持つ名前付きルート "No route matches"検索フォーム

はroutes.rbをルートである:ここで

match '/events/search/:query' => 'events#search', :as => "search" 

は、検索フォームのコードです。

<%= form_tag search_path, :method => :get do %> 
    <%= text_field_tag :query, params[:query] %> 
    <%= submit_tag "search", :name => :nil %> 
<% end %> 

(私はそれが/イベント/検索/に提出することをこのフォーム送信時に確認する方法:クエリを:?クエリはsearch_field_tagの値である)

ここでは私のevents_controllerのコードです

def search 
     @search_q = params[:query] 
     @events = Event.search @search_q #uses thinking sphinx 

     respond_with @events 
    end 

また、私はエラーが私がのsearch_pathを言う検索フォームでラインから来ているかなり確信して

/views/events/search.html.erb作成しました。それ以外のものは私が期待している通りに動作しているようですが、たとえばイベント/検索/イベントにアクセスすると、期待通りに動作します。検索フォームにプラグインし、イベント#検索に送信するだけです。どんな助け?ありがとう!

+0

レーキルートには何が得られますか? –

+0

検索/events/search/:query(.:format){:action => "search"、:controller => "events"} – botbot

答えて

1

ここでの問題は、クエリが投稿要求として渡されていることです。あなたのルートの末尾にクエリ:

/events/search/:query 

は、だから/ドロップ:あなたが定義されているよう

/events/search 

:あなたのルートを探しています。クエリは投稿時にparamsとして渡されます。ルートにそれを持つ必要はありません。

+0

応答に感謝します。あなたの提案通りに私のルートを更新しましたが、新しい問題が発生しました。id = searchのイベントを見つけることができませんでした。明らかに、検索は:/ events/searchのidであると考えています。また、私はショーアクションが呼び出されていることがわかります。 – botbot

+0

私は明示的に:method =>:getを呼び出していることを示すために上記のコードを更新しました。 – botbot

+0

検索ルートがイベントリソースよりも上にあることを確認してください。ルートが順番に実行されるため、events /:idルートが最初の場合は、IDの検索イベントを探してエラーを返します。 –

関連する問題