4

のようなURLを持つべきルートを作成していhttp://mysite/cars/1/similar/ます。これにより、指定されたID(この場合は1)の車に類似したすべての車が取得されます。

構文を使用してroutes.rbファイルにrailsメンバールートを作成できることを確認しました

resources :cars do
  member do
    get :similar
  end
end

私も次のようなことができます

match 'cars/:id/similar' => 'cars#similar', :via => "get

これら2つの構文の違いは何ですか

4

2 に答える 2

8

2つの方法は同等ではありません。

最初のメソッドは、similar_carヘルパーメソッドを生成します。2番目の方法はそうではありません。

次のようなことを行う場合は、ヘルパーメソッドが重要です。

= link_to "Similar", similar_car_path(@car)

それらを同等にするために、:asオプションを提供する必要があります。

get "cars/:id/similar" => "cars#similar", :as => "similar_car"
于 2012-08-23T01:53:29.727 に答える
7

1つはデフォルトのリソースルート宣言内に統合されており、IMOを見つけやすくなっています。もう1つはそうではなく、タイプミスなどにつながる可能性があります。大したことではありませんが、RESTfulアクションには、リソースの豊富なメカニズムを使用したいと思います。

また、私が単一ルートに好む単一行バージョンを使用することもできます。

resources :cars do
  get :similar, :on => :member
end

Meagarは正しいですが、一致フォームがヘルパーメソッドを作成しないことを忘れました。

于 2012-08-23T01:39:15.383 に答える