如何在不渲染ERB代码块的情况下从中屈服



考虑以下内容:

view.html.erb

<%= make_backwards do %>
  stressed
<% end %>

helper.rb

def make_backwards
  yield.reverse
end

该视图渲染stresseddesserts,而不是仅渲染desserts。如何在不渲染代码块的情况下使用yield中的内容?

ERB有一个内部缓冲区,这使得使用块变得更加复杂,正如您在代码示例中看到的那样。

Rails提供了一个捕获方法,它允许您捕获这个缓冲区内的字符串,并从块返回它。

所以你的助手会变成以下的:

def make_backwards
  capture do
    yield.reverse
  end
end

您可以尝试执行ff:

选项1:

<%= make_backwards { "stressed" } %>

选项2:

<%= make_backwards do %>
  <% "stressed" %>
<% end %>

如果有帮助,请告诉我。

最新更新