Ruby on rails 3 RubyonRails 3嵌套路由:错误的操作路由

Ruby on rails 3 RubyonRails 3嵌套路由:错误的操作路由,ruby-on-rails-3,nested-routes,Ruby On Rails 3,Nested Routes,我有两个模型:团队模型和项目模型 routes.rb resources :teams do resource :projects end 还有两个问题 1-根据,我希望获得团队/:团队id/项目/:id路径。然而,情况并非如此 耙道 team_projects POST /teams/:team_id/projects(.:format) projects#create new_team_projects GET /teams/:t

我有两个模型:团队模型和项目模型

routes.rb

resources :teams do
  resource :projects
end
还有两个问题

1-根据,我希望获得团队/:团队id/项目/: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'
这很好。但当我单击“新建团队项目路径”url时,它会将我重定向到同一个视图,调试器会抛出以下参数:

controller: projects
action: show
team_id: '1'
id: new
它没有将我重定向到新操作,但它将“new”作为ID!为什么?

  • 你需要使用

    resources :teams do
      resources :projects
    end
    
    注意复数<代码>资源生成没有id的单一路由

  • 将不再与第一个修复相关

  • 你需要使用

    resources :teams do
      resources :projects
    end
    
    注意复数<代码>资源生成没有id的单一路由

  • 将不再与第一个修复相关


  • 认真地我花了几个小时寻找解决方案。非常感谢,伙计。嗯,在指南里;)但我知道那种感觉。这让我想到了一个问题,/magazine/:id/ads将转到#show而不是#indexIt’s难以置信,一个简单的角色是如何伤害一个人的金属健康的。真的吗??!我花了几个小时寻找解决方案。非常感谢,伙计。嗯,在指南里;)但是我知道那种感觉。这让我想到了一个问题,一个简单的角色是如何伤害一个人的身体健康的。