0

私が取り組んでいるRails3アプリケーションでいくつかのきれいなURLを作成しようとしています...しかし、これを機能させるためにルートをカスタマイズする方法を理解するのに苦労しています。

次に例を示します。

ストアのリストがあります。各店舗はカテゴリ (健康、スポーツなど) に分類されます。各店舗には場所があります。

データを提示する方法は 2 つあります。1 つの表示はディレクトリ タイプ構造のすべての店舗のリストであり、もう 1 つは地図上です。

理想的には、URL が次のように機能することを望みます。

/stores/health/map (または /stores/map/health) を使用して、マップ上にヘルス ストアのみを表示します (基本的にマップ パラメーターは表示されるビューに影響しますが、コレクションを使用する Index コントローラーを使用します)。私のルートでは合わないようです)

もう 1 つの URL は /stores/sports/ で、スポーツ ストアのみをディレクトリ ビュー (デフォルト) で表示します。たとえば、...

これを処理するためにルートを操作する方法が完全にはわかりません...

これが私の現在のルートですが、実際にはそれを行っていません:

resources :stores do
  collection do
    get 'map'
  end
end

その上で、?query=params を使用せずにフィルターを追加できるようにしたいので、次のようにします。

/stores/sports/hockey 、本質的にホッケー店のみを除外します...

?query でこれを行うことに問題はありません。達成しようとしているより良い URL にパラメーターを配置するだけです。

ドキュメントは私がやろうとしていることの概要を説明していないようですので、私がやろうとしていることは間違っていると思います.

これは REST を壊していますか? 私はそれをすべて後ろ向きに見ていますか?

助けてくれてありがとう、JD

4

1 に答える 1

1

あなたはこれを考えすぎているかもしれません。:-)

「stores/health/map」の HTTP Get を、health_map などのアクション名で StoresController にルーティングする場合は、次のようにする必要があります。

get 'stores/health/map' => 'stores#health_map'

クリーンな URL で、データを変更せず、HTTP GET を使用するものはすべて RESTful です。(これは、REST に関する本の共著者によるものです)。メソッドの使用方法に注意する必要があるのは、データを変更する場合です。

フィルタリングを行うには、次のようにしてみてください。

get '/stores/sports/:filter' => 'stores#sports'

フィルターの値は、次のようにメソッドに渡されますparams[:filter]

于 2011-08-01T01:40:26.217 に答える