考虑以下几点:
view.html.erb:
<%= make_backwards do %>
stressed
<% end %>
helper.rb:
def make_backwards
yield.reverse
end
View 呈现 stresseddesserts
而不仅仅是 desserts
。如何在不渲染代码块的情况下使用 yield
中的内容?
最佳答案
ERB 有一个内部缓冲区,这使得 block 的使用有点复杂,正如您在代码示例中看到的那样。
Rails 提供了一个 capture方法,它允许您在此缓冲区中捕获字符串并从 block 中返回它。
因此您的助手将变成以下内容:
def make_backwards
capture do
yield.reverse
end
end
关于ruby-on-rails - 如何在不渲染的情况下从 ERB 代码块中产生?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20629159/