4

我试图弄清楚如何在 <%= ... %> 发射器中预示 Ruby 块。

'<% form_tag do %>' 部分没有问题,但是当我深入研究 Rails 内部结构并查看它如何使用 erb 处理模板时,生成的 Ruby 代码是无效的,因为挂起的 'do'。是否有一个隐藏在 Rails 中的后处理器在运行之前整理代码?如果是,它在哪里?如果不是,Rails 是如何从这种形式中提取 HTML 和 Ruby 代码的?

4

1 回答 1

6

Rails 添加了一个hack,它使用正则表达式来确定传递给 erb 的内容是否是块表达式,然后以不同的方式处理它。

更详细的解释:http ://timelessrepo.com/block-helpers-in-rails3

于 2012-08-25T00:55:04.990 回答