【问题标题】:Namespaces or prefixes for controllers控制器的命名空间或前缀
【发布时间】:2012-01-02 20:27:28
【问题描述】:

我的应用中有两个设计模型(医生和患者)。我有两组不同的控制器。目前我只是像这样为每个控制器添加前缀: PatientRegistrationsController、DoctorRegistrationsController 等。

但现在我正在考虑使用命名空间来实现更好的应用组织和结构。例如,Patient::RegistrationsController、Doctor::SessionsController。

帮助我决定我应该对我的控制器使用哪种策略 - 命名空间或前缀名称。命名空间的问题在哪里?

【问题讨论】:

  • 使用命名空间,复数形式,这样它们就不会与模型冲突:Patients::RegistrationsController、Doctors::SessionsController。我通常这样做,并将该部分的所有控制器添加到相应的命名空间中
  • 非常感谢!一个问题:你有过命名空间与 InheritedResources gem 一起玩的经验吗?
  • 如我所见,这里描述了一些问题gunnertech.com/2011/09/…
  • 不知道 InheritedResources,但我已经将它与 ActiveScaffold 一起使用(类似于 InheritedResources,但涉及更多),一切正常,稍作调整,源代码阅读和猴子补丁(不适合所有人)

标签: ruby-on-rails namespaces


【解决方案1】:

http://guides.rubyonrails.org/routing.html#controller-namespaces-and-routing

您可以将控制器放在单独的文件夹中,并通过不同的路径访问它们...

f.e..

namespace :doctor do
  resources :data_entries
end
# => http://test.com/doctor/data_entries
# => controller is in app/doctor/data_entries_controller.rb

namespace :patient do
  resources :data_entries
end
# => http://test.com/patient/data_entries
# => controller is in app/patient/data_entries_controller.rb

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多