考虑以下几点:如何从ERB代码块产生而不呈现它?
view.html.erb:
<%= make_backwards do %>
stressed
<% end %>
helper.rb:
def make_backwards
yield.reverse
end
视图呈现stresseddesserts
,而不是仅仅desserts
。如何在不呈现代码块的情况下使用yield
中的内容?
考虑以下几点:如何从ERB代码块产生而不呈现它?
view.html.erb:
<%= make_backwards do %>
stressed
<% end %>
helper.rb:
def make_backwards
yield.reverse
end
视图呈现stresseddesserts
,而不是仅仅desserts
。如何在不呈现代码块的情况下使用yield
中的内容?
ERB有一个内部缓冲区,这使得使用块有点复杂,就像你在代码示例中看到的那样。
Rails提供了一个capture方法,该方法允许您在此缓冲区中捕获一个字符串并从一个块中返回它。
所以你的助手将成为以下:
def make_backwards
capture do
yield.reverse
end
end
你可以尝试做FF:
选项1:
<%= make_backwards { "stressed" } %>
选项2:
<%= make_backwards do %>
<% "stressed" %>
<% end %>
让我知道,如果它帮助。
只是为别人在这个未来非常有用的,嵌入产生块在另一个字符串:'“