Rails 3.1 可安装引擎:如何在另一个应用程序中使用/模板化它?

发布于 2024-11-28 20:05:45 字数 368 浏览 1 评论 0 原文

假设我创建了一个名为“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”可安装引擎中的应用程序?

谢谢!

Let's say I created a mountable engine called 'Soho' that has a controller for 'Users'. I can go to /users/1 to see my user with ID 1.

Inside 'Soho', I have a application.html.erb for layout.

Now let's assume I want to "blend" my engine 'Soho' in an application called 'Soho_test', and I mount my engine at "/". So, in my host application 'Soho_test', I can also go at /users/1 to see my user with ID 1. This is working.

My question is : how can I do in my host application 'Soho_test' to apply the 'Soho_test' application.html.erb to the /users/1 (user profile page) instead of the one in the 'Soho' mountable engine?

Thanks!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

冰魂雪魄 2024-12-05 20:05:45

我找到了如何实现它,所以我将在我自己的问题上发布我的答案,以防其他人想知道。这实际上很容易。我应该首先考虑到这一点...

您所要做的就是在您的 /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 the application.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.

昵称有卵用 2024-12-05 20:05:45

读了几次你的问题后,我认为你想做的就是覆盖给定控制器的布局。

如果是这种情况,只需指定要在控制器中使用的布局,请参阅 2.2.13.1 在每个控制器上指定布局部分。 org/layouts_and_rendering.html#creating-responses" rel="nofollow">Rails 布局指南

这是一个示例:

class UsersController < ApplicationController
   layout "users"
   #...
end

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:

class UsersController < ApplicationController
   layout "users"
   #...
end
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文