2

我想在 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 %>

结果是:

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

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


红宝石:1.9.3-p392

西纳特拉:1.42

我还能提供什么?

4

1 回答 1

3

只需在 erb 中的 test_method 调用之前删除输出帮助程序,如下所示:

<% test_method do %>

= helper 期望给出一个单行表达式,而不是多行。

可以在此处此处此处找到更详细的信息。

于 2013-09-20T20:05:36.893 回答