Ruby 在erb'中使用块;s(西纳特拉,非轨道)

Ruby 在erb'中使用块;s(西纳特拉,非轨道),ruby,sinatra,erb,Ruby,Sinatra,Erb,我想在erb中使用ruby块/产量概念(具体来说,这样我就可以使用form_helpers)。当我这样做时,我会得到语法错误,但不会出现在我的erb代码中;在输出代码中,一旦erb已被处理 例如,假设我有以下助手: def test_method # assume this returns some string yield if block_given? end 我有这个雇员再培训局代码: <%= test_method do %> <h1>asd

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

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

def test_method   # assume this returns some string
    yield if block_given?
end
我有这个雇员再培训局代码:

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

asdf
结果是:

语法错误,意外'@_out buf.concat(测试方法do.to)

我知道第一行独立于其他行被转换为代码。我不明白的是为什么或者如何修复它。谢谢


ruby:1.9.3-p392

西纳特拉:1.42


还有什么我可以提供的吗?

只需在erb中的test_方法调用之前删除输出帮助程序,这样看起来像:

=helper要求给定一个单行表达式,而不是多行表达式


可以找到更详细的信息,并且。

这是否意味着不能在erb(返回字符串的帮助器方法)中使用padrino的表单_?当然可以。在示例中,注意表单_前面的破折号表示助手调用。您可以在代码中以同样的方式使用它:
感谢@4pcbr的帮助。我必须有一些非标准的erb渲染引擎,因为我用
语法得到以下结果:
未定义的方法“-@”for#
——一条很难搜索的错误消息。如果删除