0

search_field_tagでsearch_pathを呼び出すと、「ルートが一致しません」というエラーが発生します。検索フォームは私のヘッダーにあります。アイデアは単にイベントを検索できるようにすることです。

これが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 %>

(このフォームを送信するときに、/ events / search /:queryに送信されることを確認するにはどうすればよいですか?:queryはsearch_field_tagの値です)

これが私のevents_controllerのコードです

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

      respond_with @events
  end

/views/events/search.html.erbも作成しました

エラーは、search_pathと言った検索フォームの行から発生していると確信しています。他のすべては、私が期待したとおりに機能しているように見えますが、たとえば、/ events / search / sometermにアクセスすると、期待どおりに機能します。検索フォームに接続してevents#searchに送信するだけです。何か助けはありますか?ありがとう!

4

1 に答える 1

1

ここでの問題は、クエリがPOSTリクエストとして渡されていることだと思います。あなたのルートは探しています:

/events/search

あなたが定義したように:

/events/search/:query

したがって、ルートの最後に/:queryをドロップするだけです。クエリはpostでparamsとして渡されます。ルートにそれを持っている必要はありません。

于 2012-04-13T05:29:14.277 に答える