在erb中使用块(Sinatra,而不是Rails)

时间:2013-09-20 16:24:33

标签: ruby sinatra erb

我想在erb中使用ruby块/ yield概念(具体来说,我可以使用form_helpers)。当我这样做时,我得到语法错误,但不是在我的erb代码中;在输出的代码中,一旦erb已被处理。

例如,假设我有以下帮助:

def test_method   # assume this returns some string
    yield if block_given?
end

我有这个错误的代码:

<%= test_method do %>
    <h1>asdf</h1>
<% end %>

结果是:

syntax error, unexpected ')' ; @_out_buf.concat(( test_method do ).to_s)

据我所知,第一行转换为独立于其他行的代码。我不明白的是为什么或如何解决它。谢谢!


ruby​​:1.9.3-p392

sinatra:1.42

我能提供的其他任何东西?

1 个答案:

答案 0 :(得分:3)

在erb中调用test_method之前删除输出助手,看起来像:

<% test_method do %>

= helper需要给出单行表达式,而不是多行。

可以找到更详细的信息hereherehere