我正在使用 Rails 3.2.16 和 inherited_resources 1.4.1。我需要一个快速的广告自定义管理员,所以我以这篇文章为例(它对 rails 3.2 仍然有效):
http://iain.nl/backends-in-rails-3-1
这是我的路由文件的样子:
namespace :backend do
root to: 'conferences#index'
resources :conferences do
resources :talks
resources :sponsors
end
end
我的Backend::ConferencesController
和Backend::SponsorsController
它们都继承自Backend::ResourceController
,详见博客文章。
发现的问题是,每当我转到Sponsors
索引页面时,我都会得到一个NoMethodError
:
NoMethodError: undefined method `backend_sponsor_path' for #<Backend::SponsorsController:0x007fa588113e08>
奇怪的是,resource_path
方法试图找到backend_sponsor_path
而不是路由中声明的backend_conference_sponsor_path
。
有谁知道如何解决这个问题?inherited_resources
不应该能够找到正确的路径吗?
谢谢!
好的,通过将belongs_to :conference
添加到SponsorsController
中已经解决了问题:
class Backend::SponsorsController < Backend::ResourceController
belongs_to :conference
end
现在路由按预期生成! :)