Rails 3.1 可安装引擎:如何在另一个应用程序中使用/模板化它?
假设我创建了一个名为“Soho”的可安装引擎,它有一个“用户”控制器。我可以转到 /users/1 查看 ID 为 1 的用户。
在“Soho”内,我有一个用于布局的 application.html.erb。
现在假设我想将引擎“Soho”“混合”到名为“Soho_test”的应用程序中,并将引擎安装在“/”处。因此,在我的主机应用程序“Soho_test”中,我还可以访问 /users/1 查看 ID 为 1 的用户。这是有效的。
我的问题是:如何在我的主机应用程序“Soho_test”中将“Soho_test”application.html.erb 应用到 /users/1(用户配置文件页面)而不是“Soho”可安装引擎中的应用程序?
谢谢!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
我找到了如何实现它,所以我将在我自己的问题上发布我的答案,以防其他人想知道。这实际上很容易。我应该首先考虑到这一点...
您所要做的就是在您的
/views/layouts/
中使用您的引擎名称创建一个文件夹。所以根据我的问题,它将是/views/layouts/soho/
。在该文件夹中,放入您想要的application.html.erb
。您可以对部分视图和其他视图执行相同的操作。只需创建一个文件夹
/views/soho/.../
并将文件放在那里。我还没有找到一个 rake 任务来复制我的主机应用程序中的引擎视图,所以我写了一个。I found how to achieve it, so I will post my answer on my own question, in case anyone else wonders. It is actually quite easy. I should have thought about this in the first place...
All you have to do is to create a folder in your
/views/layouts/
with the name of your engine. So according to my question, it would be/views/layouts/soho/
. In that folder, put theapplication.html.erb
that you want to have.You can do the same with partials and other views. Just create a folder
/views/soho/.../
and put your files there. I havn't found a rake task to copy the engine views in my host application, so I wrote one.读了几次你的问题后,我认为你想做的就是覆盖给定控制器的布局。
如果是这种情况,只需指定要在控制器中使用的布局,请参阅 2.2.13.1 在每个控制器上指定布局部分。 org/layouts_and_rendering.html#creating-responses" rel="nofollow">Rails 布局指南
这是一个示例:
After reading your question over a few times, I think all you are trying to do is override a layout for a given controller.
If that is the case just specify the layout to use within your controller see the section 2.2.13.1 Specifying Layouts on a per-Controller Basis within the Rails Guide for Layouts
Here's an example: