考虑以下内容:
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 %>
如果有帮助,请告诉我。