2

我对渲染有点困惑,不太确定它选择链接哪个路径。

根据文档: http: //guides.rubyonrails.org/layouts_and_rendering.html#using-render

我们可以有明确的链接:

render "/u/apps/warehouse_app/current/app/views/products/show"

但是,在 /apps/view/layouts/application.html.erb 中,如果我有 _header 和 _footer 的垫片,我必须去:

render 'layout/header'

因此它会查找从 ../app/view/ 开始的路径,然后附加 layout/_header.html.erb 以获取文件。但是在 ruby​​onrails.org 上列出的使用显式链接的规则中,由前导 / 指示,具有从根文件夹 (/u/apps/...) 开始的路径。

所以我的问题是当使用带有前导 / 哪个是起始导演的渲染时?它总是根,布局只是规则的一个例外吗?

谢谢

4

3 回答 3

2
render '/layout/header'

应该只是

render 'layout/header'
于 2012-06-27T07:43:04.500 回答
1

我想你错过了这一点。render 方法还可以使用完全在您的应用程序之外的视图(也许您正在两个 Rails 应用程序之间共享视图):

render "/u/apps/warehouse_app/current/app/views/products/show"

由于前导斜杠字符,Rails 确定这是文件渲染。

通常,如果您要从另一个控制器添加视图文件,则它需要

render "prodcucts/show"

它将自动采用路径直到查看文件夹。对于布局,您可以与上述相同

render "layouts/header"
于 2012-06-27T07:49:22.230 回答
1

render我认为关于正确路径的混淆是由于您使用第一个选项指向布局文件这一事实引起的。这不是应该使用布局的方式。

相反,您会像这样使用它们:

render 'users/show', layout: 'mylayout'

但是,在您的情况下,您真正​​想要使用的似乎是partials

像这样的东西会起作用:

render 'shared/header'

文件名为_header.html.erb

文档中的两个重要说明:

对于应用程序中所有页面之间共享的内容,您可以直接从布局中使用部分内容。

和:

部分可以使用自己的布局文件,就像视图可以使用布局一样。例如,您可能会像这样调用部分:

<%= render :partial => "link_area", :layout => "graybar" %>
于 2012-06-27T07:50:20.343 回答