2

2 つのリソースがあります。

resources :users do
 resources :cars
end

協会は次のとおりです。

  • ユーザーは多くの車を持つことができます
  • 車はユーザーのもの

そのようなネストされたリソースを実行すると、次のような URL が表示されます。

/users/:id/cars/new 

私の質問は:

/cars/newログインしている current_user から取得するため、(/users/:id なしで)実行する方が理にかなっている場合:id、ルートでそれをどのように解決しますか?

4

3 に答える 3

4

この質問の正解は次のとおりです。

resources :users do
  collection do
    resources :cars
  end
end
于 2014-12-17T20:38:02.360 に答える
3

ネストされたルートはまったく使用しません。ネストされたルートを持たなくても、ネストされたモデルを持つことができます。セッションから現在のユーザーをロードするだけで (おそらく既にこれを行っています)、ログインしていない限り、誰も cars コントローラーにアクセスできないようにします。

于 2012-06-16T18:01:08.090 に答える
0

routes.rb 内

resources :cars, :only => [:new, :create] # if you don't need all actions
resources :users do
  resources :cars
end

車のコントローラーのようなもの

before_filter :find_user
...
private
def find_user
  @user = params[:user_id] ? User.find(params[:user_id]) : current_user
end
于 2012-06-16T17:54:12.873 に答える