【问题标题】:Namespaces and resources on Rails routesRails 路由上的命名空间和资源
【发布时间】:2012-05-04 04:11:59
【问题描述】:

我正在开发一个带有后台 (admin) 的应用程序,该应用程序仅限于某些用户使用,以便修改内容。另一方面,我有一个可供客户端访问的网络服务 (api)。

所以我在命名空间中分离了这两个部分,并且我意识到当我将脚手架用于诸如问题之类的资源时,生成的控制器假定资源是 admin::questions,但是那不是我想要的。

我希望有:

/admin/questions to handle my questions (controller admin/questions_controller.rb)

/api/questions to serve my questions  (controller api/questions_controller.rb)

但在这两种情况下,它是相同的模型。

我应该继续在路由中使用命名空间还是使用模块? 这是否违背了 Rails 资源的理念?

感谢您的意见。

【问题讨论】:

  • 通常使用命名空间的原因是完全按照脚手架 id 生成的方式进行操作。也就是说,您想要为 GUI 和 API 使用不同的控制器。考虑一下,如果您有不同的控制器,您将没有清洁的 respond_to(并且可能能够取出 respond_to)。
  • 这并不是说你的做法是错误的。 respond_to 就是为了这样一个目的。

标签: ruby-on-rails resources namespaces routes


【解决方案1】:

通过运行rails generate scaffold -h,我看到了一个名为--skip-namespace 的选项。这就是你要找的东西吗?

来自文档:

Usage:
  rails generate scaffold NAME [field[:type][:index] field[:type][:index]] [options]

Options:
    [--skip-namespace]                        # Skip namespace (affects only isolated applications)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-24
    • 1970-01-01
    • 2011-05-25
    • 2023-03-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多