0

私は初めての Ruby on Rails アプリケーションを作成しています。これを「Rails」の方法で行い、アプリケーションをできるだけ RESTful にしたいと考えています。

このアプリケーションは、検索機能を中心に展開します。ユーザーは、探しているものを定義するフォームに入力して送信し、結果をページをめくって、興味のある項目を表示します。REST に関する私の理解からすると、そうすべきだと思います。パラメータを結果ページの URL にエンコードする (?)

私の基本ルートが次の場合:

match "search" => "search#index"

私の検索結果の基本ルートは次のとおりです。

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

検索にルート/URL/パラメータを実装する最良の方法は何ですか? ソリューションは次のことを行う必要があります。

  • 多くのパラメーター (30 以上) をサポートします。そのうちのいずれかをオプションにすることができます。
  • ページネーションのサポート: 多くの結果が得られる可能性があります。
  • 「Rails 方式」を遵守してください。

Rails のプロからの提案やヒントは非常に役に立ちます。

4

2 に答える 2

1

will_paginateページネーションの場合:またはのような宝石を使用できますkaminari

検索パラメーターについて: Rails は、リクエストのクエリ文字列内のすべてを、paramsコントローラーとビュー内でアクセス可能な変数に入れます。

あなたがやろうとしていること(URLの検索と検索/結果の名前付け)は、「安らかなルート」と実際には一致しません。それでも、これはあなたが求めたものです。

scope :search do 
  get 'search' => 'search#index' 
  get 'search/results' => 'search#show' 
end

生産します

  search GET            /search(.:format)                search#index
  search_results GET    /search/results(.:format)        search#show

落ち着きを保つために、探しているものを見極めてみてください... 製品の場合、結果は を使用して表示されますProducts#index

検索範囲を広くしたい場合は、 と をお勧めSearch#newResults#indexます。これらの後者のオプションは、より RESTful に見えます。

于 2012-10-12T16:39:21.873 に答える
0

ご想像のとおり、これらの 30 個のパラメーターを URL パラメーターとして渡すことは、おそらく最善の方法ではありません。
それらの構成モデル (およびテーブル) を作成することを検討し、このモデルを更新できるフォームに焦点を当てます。これにより、検索の保存、複数の検索の実行、検索の検証が IMHO ではるかに簡単になります。このモデルを実際のモデルと組み合わせて使用​​し、検索を行います。

ページネーションについては、 rthbound が言うように、will_paginateまたはkaminariを使用してください。

于 2012-10-12T16:45:42.080 に答える