0

チームとプロジェクトの 2 つのモデルがあります。

ルート.rb

resources :teams do
  resource :projects
end

そして2問!

1- http://guides.rubyonrails.org/routing.htmlによると、teams/:team_id/projects/:id パスを取得することを期待しています。しかし、そうではありません。

レーキルート

         team_projects POST     /teams/:team_id/projects(.:format)      projects#create
     new_team_projects GET      /teams/:team_id/projects/new(.:format)  projects#new
    edit_team_projects GET      /teams/:team_id/projects/edit(.:format) projects#edit
                       GET      /teams/:team_id/projects(.:format)      projects#show
                       PUT      /teams/:team_id/projects(.:format)      projects#update
                       DELETE   /teams/:team_id/projects(.:format)      projects#destroy

だから私はそれを機能させるためにルートに名前を付ける必要がありました

  match 'teams/:team_id/projects/:id' => 'projects#show', :via => [:get], :as => :show_project

では、名前を付ける代わりに Rails ヘルパー メソッドを利用するにはどうすればよいでしょうか?


2- プロジェクトのショーアクションビューで、デバッガーは次のパラメーターをスローします。

action: show
controller: projects
team_id: '1'

これは問題ありません。しかし、「new_team_projects_path」URL をクリックすると、同じビューにリダイレクトされ、デバッガーは次のパラメーターをスローします。

controller: projects
action: show
team_id: '1'
id: new

新しいアクションにはリダイレクトされませんが、ID として「new」が使用されました。なぜ?

4

1 に答える 1

4
  1. あなたが使用する必要があります

    resources :teams do
      resources :projects
    end
    

    複数形に注意してください!resourceIDなしの特異ルートを生成します。

  2. 最初の修正にはもう関係ありません。

于 2012-07-21T02:36:00.883 に答える