为什么这个块在我的 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
调用。)
<%= 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
调用。)