为什么这个块在我的 ERB 模板上不起作用

Why is this block not working on my ERB template

<%= render layout: "shared/some_template", 
      locals: {
               variable_value: true 
              } do %>
   <%= hidden_field_tag "ids[]", "ng-value": "sth.id" %>
<% end %>

某些模板上的模板有一些 html 和一个 yield 调用,其中 "hidden" 字段应该去但它没有呈现它,它确实呈现模板内的所有其他内容,它只是丢弃hidden_field_tag部分。

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

您正在将 &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
 %>

现在在模板调用中 <%= callback.call %>

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