Ruby on rails Rails将后端和前端分开

Ruby on rails Rails将后端和前端分开,ruby-on-rails,ruby,namespaces,frontend,backend,Ruby On Rails,Ruby,Namespaces,Frontend,Backend,我真的对rails名称空间感到困惑。我尝试创建自己的管理名称空间,以便将名称空间添加到路由中,效果很好。然后我将文件夹管理员添加到控制器中。 管理员::控制器 这就是我在该文件夹中的控制器的外观 但问题来了。我怎样才能把助手分开?rails自动加载所有帮助程序。我在配置中禁用了它,但现在它不会像模块Admin::ApplicationHelper那样手动加载它 接下来的事情怎么样需要分开的是什么?像i18N、会话、闪烁?有关于这个问题的教程吗?我正在使用Rails 4。感谢您的建议您只需要名称空

我真的对rails名称空间感到困惑。我尝试创建自己的管理名称空间,以便将名称空间添加到路由中,效果很好。然后我将文件夹管理员添加到控制器中。 管理员::控制器 这就是我在该文件夹中的控制器的外观

但问题来了。我怎样才能把助手分开?rails自动加载所有帮助程序。我在配置中禁用了它,但现在它不会像模块Admin::ApplicationHelper那样手动加载它


接下来的事情怎么样需要分开的是什么?像i18N、会话、闪烁?有关于这个问题的教程吗?我正在使用Rails 4。感谢您的建议

您只需要名称空间控制器、视图、模型和帮助程序,而不是您提到的所有内容。如果禁用了自动加载帮助程序,则必须手动要求您需要的每个帮助程序:

require 'admin/admin_helper'

class Admin::Controller < ActionController::Base
  ... code ...

然后,如果需要,只需要在你的管理控制器中使用它。我会一直启用自动加载帮助程序,以避免在任何地方都需要它们。

正如您所注意到的,rails默认将所有帮助程序包含到所有视图中。您可以通过添加

config.application_controller.include_all_helpers = false
这将导致仅包括ApplicationHelper和控制器的helper。添加

helper :foo

添加到控制器将导致除了默认值之外还包含FooHelper。如果有应该为所有管理控制器加载的帮助程序,则将其添加到它们的基类中。如果您需要更多的东西,那么考虑使用Rails引擎(使用IsAutoTyNasePACES选项打开)

我不会自动加载它们,因为我在sessions helper for admin和sessions helper for frontend中使用了相同的方法,并且加载了错误的方法:/。你所要求的正是Rails引擎的设计目的。关于隔离的_名称空间的最后一条建议帮助了我:)我将应用程序的管理部分与引擎完全分离。我希望这是最好的解决办法:)谢谢
helper :foo