如何在Rails中渲染链接

时间:2012-06-27 07:37:35

标签: ruby-on-rails ruby

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

根据文件: 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来获取文件。但是在rubyonrails.org上列出的规则中,使用显式链接,由leading表示,有一个从根文件夹开始的路径(/ u / apps /...).

所以我的问题是当使用带领先的渲染/哪个是首发导演?它总是root,布局只是规则的一个例外吗?

由于

3 个答案:

答案 0 :(得分:2)

render '/layout/header'

应该只是

render 'layout/header'

答案 1 :(得分:1)

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

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

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

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

render "prodcucts/show"

它将自动占用视图文件夹之前的路径。对于布局,您可以与上面相同

render "layouts/header"

答案 2 :(得分:1)

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

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

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

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

这样的事情会起作用:

render 'shared/header'

使用名为_header.html.erb

的文件

文档中的两个重要说明:

  

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

  

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

<%= render :partial => "link_area", :layout => "graybar" %>