3

:idパラメータをオーバーライドしたいのですが、これはその方法を説明しています。ただし、ネストされたリソースでは実際には機能しません。私のルートは次のようになります。

resources :users, param: :user_id do
  resources :projects, param: :project_id
end

これにより、次の形式の URL が生成されます: :user_user_id/:project_id. 私はむしろそれをしたいと思い:user_id/:project_idます。誰か助けてくれませんか?

4

2 に答える 2

5

これはすでに回答された古いトピックであることは知っていますが、@ Sonalkr132のコードではなく@Зелёныйのコードが機能する理由についての説明がないことがわかります(これはトピックから外れているように見えるかもしれませんが、@sonalkr132は別の質問を投稿しました彼はそれがどのように機能するかを理解していませんでした)

projects内部, railsのようなネストされたリソースを作成すると、ナンセンスである のようusersなパスを持つリスクがあるため、レールは最初のにusers/:id/projects/:idプレフィックスを自動的に追加します。したがって、これ以上の説明は必要ありません):idparams:user_id:id:project_id

さて、あなたが言うとき、これは接頭辞とparam: :user_id一緒に追加されます.user_:user_user_id

于 2016-10-27T18:38:06.870 に答える
0

このコード:

resources :users do
  resources :projects, param: :project_id
end

次のようなルートを生成します。

    user_projects GET    /users/:user_id/projects(.:format)                          projects#index
                  POST   /users/:user_id/projects(.:format)                          projects#create
 new_user_project GET    /users/:user_id/projects/new(.:format)                      projects#new
edit_user_project GET    /users/:user_id/projects/:project_id/edit(.:format)         projects#edit
     user_project GET    /users/:user_id/projects/:project_id(.:format)              projects#show
                  PATCH  /users/:user_id/projects/:project_id(.:format)              projects#update
                  PUT    /users/:user_id/projects/:project_id(.:format)              projects#update
                  DELETE /users/:user_id/projects/:project_id(.:format)              projects#destroy

テスト済み。Rails '4.2.1'

于 2015-08-29T08:50:42.613 に答える