2

私はまだRailsにかなり慣れていません。私はそのコツをつかみ始めていますが、私がやりたいことは今のところ私を超えています。私は多くの研究を行い、検索ボックスの作成についてはたくさんありますが、プロセスを合理化したいと思います。だから、私はこれを行うビューヘルパーを持っています:

<% if @events.any? %>
  <ol class="events">
    <%= render @events %>
  </ol>
<% end %>

これは正常に機能し、ユーザー自身のイベントを表示します。オブジェクトごとに3行で構成されるイベントオブジェクトのリスト、、、、を取得:city:event_nameます:event_date。私がやりたいのは、/行のいずれか:cityまたは両方のオブジェクトをクリックして、同じANDを持つすべてのイベントを検索する検索結果を表示できるようにすることです。FWIWドロップダウンを使用してイベントオブジェクトの都市と日付を取得しているので、ユーザーによる入力の違いはありません。先に進んで、自分でビューをレンダリングする必要があると思います。:city:event_date:city:event_date

<% @events.each do |e| %>
    <%= link_to e.city, searchlinkthingie %>
<% end %>

結果を取得して新しいページを表示するための関連する検索コントローラーと、新しいルートも表示されます。コントローラーとルートの作成はまだ試していません。どのように表示する必要があるのか​​よくわからないためです。私は読んでいてlink_to、先に進んで直接リンクを作成する必要があると思っていますが、繰り返しになりますが、どのように表示されるかわかりません。モニターに頭を突っ込む準備ができました。考え?

編集:以下の答えに触発された解決策はlink_to、都市とイベントの日付の両方に2つの結合された文字列を作成し、イベントモデルのメソッドsearch_url(params[:search1 event.city, :search2 event.date])を呼び出したイベントコントローラーで関連する検索メソッドを作成し、ルートで「一致」することでしたself.search.rb。モデルはANDを使用してSQLクエリを実行し、単純なヘルパーを使用して表示された、必要な結果を返しました。

4

1 に答える 1

1

したがって、任意の都市を入力して目的の結果を取得できるように検索を作成します。それがステップ1です。検索コントローラーのアクションは、検索文字列であるパラメーターを受け入れます。パラメータがと呼ばれているとしましょうquery

search_controllerつまり、というアクションを持つaのようなものがあり、そのアクションは結果を返すためにsearchの値を取ります。params[:query]

それを取得したら、次のように事前定義された検索へのリンクを作成できます。

<%= link_to e.city, search_search_path(:query => e.city) %>

このリンクは、 (したがってパス)のsearchアクションへのリクエストをトリガーし、パラメーターをに設定します。search_controllersearch_search_pathquerye.city

最後に、このアクションは特定のレコードでは機能しないため、ルート:collectionではなくなります。:memberしたがって、命名規則に応じて、routes.rbファイルのエントリは次のようになります。

config.resource :search do
  get :search, :on => :collection
end

これにより、次のようなURLになります。

http://example.com/search/search?query=chicago

ここで、パラメーターが含まれているコントローラーのアクションに/search/search/マップされます。searchsearchquery

そのURLをさらに短縮する一致ルール(ここに示すRails 3スタイル)を入力することもできます。

match "/search" => "search#search"

これにより、次のようなURLを使用できるようになります。

http://example.com/search?query=chicago

...これは前の例と同じように機能します。

于 2012-08-07T22:06:02.253 に答える