【问题标题】:Rails: Nested resourcesRails:嵌套资源
【发布时间】:2012-09-11 18:02:41
【问题描述】:

以下路径抛出错误:

 = link_to 'Subscribers', user_subscribers_path(current_user)

的未定义方法“user_subscribers_path”

我不知道为什么。

我的路线定义如下:

  resources :users, :only => [:show, :index], :has_many => :subscribers, :shallow => true

谢谢!

编辑 rake routes 没有显示任何特别有用的东西。只有两行有订阅者:

users GET    /users(.:format)               users#index {:has_many=>:subscribers}
user GET    /users/:id(.:format)           users#show {:has_many=>:subscribers}

【问题讨论】:

  • 您可以在终端中执行rake routes 并向我们展示结果吗?
  • 是的,我现在更新了我的问题。

标签: ruby-on-rails nested-resources


【解决方案1】:

你需要在路由文件中定义资源订阅者如下

resources :users do 
 resources :subscribers
end

这将为您的资源创建所需的路径助手

对于你可以使用的浅层路线

 map.resources :users, :shallow => true do |user|
  user.resources :subscribers 
 end

【讨论】:

  • 我希望我的路线比较浅。我想我必须在这里定义浅层?
  • 这似乎定义了像 new_subscriber GET/subscribers/new(.:format) subscribers#new 这样的路由——这可能是我不感兴趣的东西,因为我正在寻找嵌套路由......
  • 这将创建嵌套路由,您可以通过将 :shallow=> true 传递给助手来创建浅层路由。看看这个archives.ryandaigle.com/articles/2008/9/7/…
  • 工作。我只是用 :shallow 添加了您在上面添加的内容。我已将您的答案标记为已修复 - 如果您使用 :shallow 更新您的答案以供将来参考和其他用户使用,那就太好了。谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-01-05
  • 2012-02-02
  • 2012-02-09
  • 2010-09-15
  • 1970-01-01
相关资源
最近更新 更多