namespaces - 协调 Admin:: Controller 与::模型

标签 namespaces ruby-on-rails-3

使用 Rails 3,我在根命名空间中有一些模型(例如 Product),但在 Admin::模块中有 Controller (例如 Admin::ProductsController)。不幸的是,这似乎会导致基本功能出现问题,例如 form_for(@product) 生成

undefined method `products_path' for #<#<Class:0x103dc4110>:0x103dc1618>

这大概是因为 routes.rb 条目
namespace :admin do
    resources :products
end

生产
admin_products GET    /admin/products(.:format)   {:action=>"index", :controller=>"admin/products"}

带有“admin_”前缀,但 form_for(@product) 似乎不明白这一点。

我只想向 Rails 声明编辑产品的 Controller 是 Admin::ProductsController,但似乎缺少两者之间的链接。我试过了:
  • 调整 routes.rb 声明上的参数(但作为一个完整的 Rails n00b,我完全有可能错过了正确的方法)
  • 在模型类中寻找某种形式的声明来改变 form_for 推导 _path 助手的方式
  • 将模型移动到 Admin 命名空间;然而,这不仅在概念上是不可取的,因为模型对象在 Admin::之外的其他地方使用,并且与管理没有任何特定的语义联系(只是 Controller 中的编辑等),而且它还导致测试和特别是我无法解决的固定装置。

  • 构建这种系统的最接近 Rails 的现代方法是什么,我该如何解决这个问题?我觉得我一直在与框架作斗争,所以如果有一个整体更好的方法来做到这一点,我愿意接受建议,但即使我试图通过将模型放在 Admin 中来完全绕过问题:::只是开辟了新问题…

    最佳答案

    这应该做你想做的:form_for [:admin, @product]

    关于namespaces - 协调 Admin:: Controller 与::模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3721735/

    相关文章:

    ruby-on-rails - 在过滤器为整个 Controller 分配异常之前

    ruby-on-rails - Rails 中的黑客新闻算法?

    ruby-on-rails - 命名空间嵌套资源

    r - 命名空间中的 S3 方法未导出

    ruby-on-rails - 用模型方法查询?

    ruby-on-rails - 在 Ruby on Rails3 中使用什么验证码系统?

    javascript - 我如何命名 SystemJS 包

    c++ - 在 Visual Studio 2010 C++ 中包含命名空间

    apache - 轴故障 : Namespace mismatch error when called from certain client such as Docuware

    java - 更改 CXF 中生成的类的包