【问题标题】:How can I render a partial view from within a layout file?如何从布局文件中渲染局部视图?
【发布时间】:2018-10-21 08:04:55
【问题描述】:

要添加一些上下文,我了解到在视图文件夹中,您可以创建一个文件并使用“_partialname”添加一个部分,例如“_login”。 在我的 index.html.erb 文件或我通常会放置的任何其他文件上:

<%= render "login" %>

这是我为布局文件夹所做的,但它不起作用。

下面是我的文件/views/layouts/application.html.erb 的 sn-p。在同一个布局文件夹中,我创建了一个 _footer.html.erb,我希望我的所有视图都拥有它,但是当我尝试以下操作时,它给了我一个错误:

</head>

<body>
<%= yield %>

<%= render "footer" %>
 </body>
</html>

添加错误信息:

Missing partial static/_footer, application/_footer with {:locale=>[:en], :formats=>[:html], :variants=>[], :handlers=>[:raw, :erb, :html, :builder, :ruby, :coffee, :jbuilder]}. 
Searched in:
 * "/Users/rogerperez/DevProjects/Property-Pal/app/views"

更新:为我的问题添加了上下文

【问题讨论】:

  • 错误是什么? (请添加到您的问题中。)
  • 除了应该是render partial: 'footer'...
  • 以下两个答案都有效。 "layouts/footer" %>

标签: ruby-on-rails layout render partials


【解决方案1】:

该代码将从 app/views/layouts/_footer.html.erb 中提取部分代码。

<%= render :partial => "layouts/footer" %>

【讨论】:

    【解决方案2】:

    如果 _footer.hml.erb 在 layouts 文件夹中,那么您可以在 ../views/layouts/application.html.erb 中渲染它:

    <%= render 'layouts/footer' %>
    

    【讨论】:

      【解决方案3】:

      我相信在这种情况下你的路径是错误的。把代码改成

      <%= render 'layouts/footer' %>
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-02-28
        • 1970-01-01
        相关资源
        最近更新 更多