请考虑以下事项:
view.html.erb :
<%= make_backwards do %>
stressed
<% end %>
helper.rb :
def make_backwards
yield.reverse
end
视图呈现stresseddesserts
而非desserts
。如何在不渲染代码块的情况下使用yield
中的内容?
答案 0 :(得分:5)
ERB有一个内部缓冲区,这使得使用块变得更复杂,正如您在代码示例中所看到的那样。
Rails提供了一个capture方法,它允许您捕获此缓冲区内的字符串并从块中返回。
所以你的助手会变成以下:
def make_backwards
capture do
yield.reverse
end
end
答案 1 :(得分:1)
你可以尝试做ff:
选项1:
<%= make_backwards { "stressed" } %>
选项2:
<%= make_backwards do %>
<% "stressed" %>
<% end %>
如果有帮助,请告诉我。