0

我想做一个引擎。我的引擎可能是可安装的,也可能不是,这并不重要。但我想使用我的主要应用程序布局,如 Devise 来渲染引擎的视图。这也很容易。

但!当我的应用程序的布局和 Rails 引擎的视图模板呈现时,我遇到了一个异常,因为我在我的布局中使用了 url 助手,但是这个 url 助手在我的 main_app 中。所以我知道我可以在布局文件中的所有 url 助手之前编写一个 main_app 上下文,但我不想这样做。设计就是这样工作的。例如,如果您查看会话/新视图,则不必在应用程序布局中编写 main_app.pages_url。但我不知道他们是怎么做到的。我想知道它,我已经阅读了我已经阅读了文档的代码,但我什么也没找到。请有人告诉我他们是如何做到的。如何制作一个引擎来处理像 Devise 这样的 main_app url 助手。谢谢你。

4

1 回答 1

1

这取决于您的引擎类型。如果您的引擎包含该行isolate_namespace SomeModule,则意味着url_helpers(和一般的助手)不会在您的应用程序和引擎之间共享。所以你需要求助于诸如此类的工具main_app

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

于 2012-10-26T10:09:31.627 回答