我想在 erb 中使用 ruby block/yield 概念(具体来说,这样我就可以使用 form_helpers)。当我这样做时,我会遇到语法错误,但不是在我的 erb 代码中;在处理 erb 后输出的代码中。
例如,假设我有以下助手:
def test_method # assume this returns some string
yield if block_given?
end
我有这个 erb 代码:
<%= test_method do %>
<h1>asdf</h1>
<% end %>
结果是:
语法错误,意外的“)”; @_out_buf.concat(( test_method do ).to_s)
我知道第一行被转换为独立于其他行的代码。我不明白的是为什么或如何解决它。谢谢!
ruby :1.9.3-p392
西纳特拉:1.42
我还能提供什么吗?
最佳答案
只需在 erb 中的 test_method 调用之前删除输出帮助程序,如下所示:
<% test_method do %>
= helper 期望给出单行表达式,而不是多行表达式。
关于ruby - 在 erb 中使用 block (Sinatra,而不是 Rails),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18921478/