【问题标题】:Why is this block not working on my ERB template为什么此块不适用于我的 ERB 模板
【发布时间】:2018-11-22 09:18:03
【问题描述】:
<%= render layout: "shared/some_template", 
      locals: {
               variable_value: true 
              } do %>
   <%= hidden_field_tag "ids[]", "ng-value": "sth.id" %>
<% end %>

某个模板上的模板有一些 html 和一个 yield 调用,“隐藏”字段应该去的地方,但它没有渲染它,它渲染了模板内的所有其他内容,它只是删除了 hidden_​​field_tag 部分。

知道如何解决这个问题吗?当我尝试它时它适用于HAML版本,但不适用于ERB,这不适用于ERB吗?

【问题讨论】:

    标签: ruby-on-rails erb


    【解决方案1】:

    您正在将 &amp;block 传递给 render,但它没有做任何事情。

    要将回调传递给部分,请构建 lambda 并将其放入局部变量中:

    <%= 
      lamb = lambda{ hidden_field_tag 'ids[]', 'ng-value' => 'sth.id' }
      locals = { variable_value: true, callback: lamb }
      render layout: 'shared/some_template', locals: locals
     %>
    

    现在在模板中调用&lt;%= callback.call %&gt;

    (注意,顺便说一句,我使用' 而不是",因为我们没有使用" 的特殊功能。注意我引入了一个局部变量locals,而不是创造性地缩进render 打电话。)

    【讨论】:

    • 出于好奇,在模板中包含所有这些内容会让您感到奇怪吗?
    • 我之前已经将回调传递给部分模板。视图应该是愚蠢的 - 胖,但愚蠢。
    • 正因为如此,为什么它适用于 HAML 而不是 ERB,它只是 HAML 的一个功能?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-09-30
    • 1970-01-01
    • 1970-01-01
    • 2012-07-23
    • 2020-12-16
    • 2018-06-19
    • 1970-01-01
    相关资源
    最近更新 更多