我对渲染有点困惑,不太确定它选择链接的路径。
根据文件: 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,布局只是规则的一个例外吗?
由于
答案 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" %>