ruby - 在 erb 中使用 block (Sinatra,而不是 Rails)

标签 ruby sinatra erb

我想在 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 期望给出单行表达式,而不是多行表达式。

更详细的信息可以找到here , herehere .

关于ruby - 在 erb 中使用 block (Sinatra,而不是 Rails),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18921478/

相关文章:

ruby-on-rails - 为什么 Pik 不安装 Ruby?

ruby - sinatra 框架的 MVC 模式

ruby - 具有 unicorn 和 memcached 的 Sinatra 应用程序应该为缓存命中返回 304 代码吗?

c# - 类似于 C# 的 ERB 库

javascript - 为什么我的 JSON 数据作为数据属性从 erb 传递到 Javascript 时会丢失?

ruby-on-rails - rails 3 : Migrating a model to MongoDB

ruby - 如何将嵌套的哈希值收集到 ruby​​ 中的数组中?

ruby - Ruby/Sinatra 中的继承

ruby-on-rails - 通过迭代 3 个不同的数组在 erb 中构建一个表

ruby-on-rails - heroku run rake db :migrate 错误