如何制作像Devise这样的应用程序布局的引擎?

时间:2012-10-25 15:04:03

标签: ruby-on-rails ruby ruby-on-rails-3.1 devise ruby-on-rails-3.2

我想做一个引擎。我的发动机可以安装或不安装它并不重要。但我想使用像Devise这样的主应用程序布局来渲染引擎的视图。这也很容易。

但是!当我的应用程序的布局和rails引擎的视图模板呈现时,我得到了一个例外,因为我在我的布局中使用url帮助器,但是这个url助手在我的main_app中。所以我知道我可以在布局文件中的所有url助手之前编写一个main_app上下文,但我不想这样做。 Devise就是这样做的。如果您查看会话/新视图,则不必在应用程序布局中编写main_app.pages_url。但我不知道他们是怎么做到的。我想知道它,我已经阅读了我阅读文档的代码,但我一无所获。请有人告诉我他们是怎么做到的。如何创建一个处理像Devise这样的main_app url助手的引擎。谢谢。

1 个答案:

答案 0 :(得分:1)

这取决于您的引擎类型。如果您的引擎包含行isolate_namespace SomeModule,则意味着您的应用程序和引擎之间不会共享url_helpers(以及一般的帮助程序)。因此,您需要使用main_app等工具。

也就是说,Devise所做的就是共享布局就是不要调用isolate_namespace,这就是引擎在Rails 2.2中引入时的工作方式。对于那些希望更强解耦的人来说,在Rails 3.1中添加了isolate_namespace功能。