【问题标题】:Render :partial with :layout don't work in view渲染 :partial 和 :layout 在视图中不起作用
【发布时间】:2011-07-28 18:16:26
【问题描述】:

所以我对:partial 渲染有疑问...

我有:

index.html.erb 查看内容为<%= render :partial => 'partial_test', :layout => 'partial_test' %> index.html.erb' layout with content of`

_partial_test.html.erb 包含简单字符串内容的视图 _partial_test.html.erb 布局,内容为<div id="_partial"><%= yield %></div>

渲染后,我从控制器(视图+布局)索引操作中获得了正确的内容,但从渲染部分我只从视图中获得内容,布局丢失。

我应该得到这样的东西: <div id="index"> <div id="_partial"> simple string </div> </div>

但我得到了 <div id="index"> simple string </div>

这很奇怪,因为当我从内部控制器索引操作中使用布局渲染部分时,我得到了正确的视图 + 布局渲染(仅适用于部分)。

需要帮助:)

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-3


    【解决方案1】:

    而不是使用

    &lt;%= render :partial =&gt; 'partial_test', :layout =&gt; 'partial_test' %&gt;

    我需要使用的是

    &lt;%= render :partial =&gt; 'partial_test', :layout =&gt; 'layouts/partial_test' %&gt;

    【讨论】:

    • 需要注意的几个重要事项:a) 这个助手与普通的 render 助手不同,在使用布局时,render 使用 partial 键而不是采用一个字符串作为它的第一个参数。 b) 布局文件名前必须有下划线,例如layouts/partial_test 的参数将映射到 layouts/_partial_test.html.erb 的文件名。
    • 另外,这里是文档相关部分的链接:guides.rubyonrails.org/…
    • 与我刚刚发现的普通 render 用法的另一个区别:在使用布局时传递本地变量时,locals 键是必需的。
    【解决方案2】:

    当我阅读 Rails 文档时,您不希望:

    <%= render :partial => 'partial_test', :layout => 'partial_test' %>
    

    你想要:

    <%= render 'partial_test', :layout => 'partial_test' %>
    

    我不确定您的布局和部分如何/为什么具有相同的名称,但请查看 Rails 指南:http://guides.rubyonrails.org/layouts_and_rendering.html,第 3.4.3 节。

    【讨论】:

    • 嗨@Steve,我已经阅读了本指南,如果我不使用:partial 部分布局将无法加载。在这种情况下,文件名并非无关紧要。谢谢回复。
    • 根据我的经验,这个答案是不正确的。 partial必需的。
    猜你喜欢
    • 2011-11-11
    • 1970-01-01
    • 1970-01-01
    • 2017-02-27
    • 2015-11-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多