inherited_resources给出了错误的resource_path

时间:2014-01-03 11:24:48

标签: ruby-on-rails-3.2 inherited-resources

我正在使用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::ConferencesControllerBackend::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不应该找到正确的路径吗?

谢谢!

1 个答案:

答案 0 :(得分:0)

好的,问题已通过belongs_to :conference添加SponsorsController来解决:

class Backend::SponsorsController < Backend::ResourceController
  belongs_to :conference
end

现在按预期生成路线! :)