我在我的jbuilder模板中使用了新的哈希语法,这一行似乎根本没有被执行。
json.partial! 'comments', post:, comments:
如果我将该行修改回旧语法或添加大括号或中括号,它就可以工作。
json.partial!('comments', post:, comments:)
json.partial! 'comments', { post:, comments: }
json.partial! 'comments', post: post, comments: comments
有谁能解释一下这里发生了什么吗?是不是和模板编译有关?谢谢。
1条答案
按热度按时间ca1c2owp1#
简单测试模板:
我不知道如何以其他方式访问它,但您可以在以下位置检查已编译的
source
:* 网址:http:github.com/rails/rails/blob/v7.0.4.3/actionview/lib/action_view/template.rb#L282*查看模板呈现时实际运行的代码:
如果没有方括号,
json.target!
将成为name
的值,模板将返回json.attr
返回的值或json.partial!
返回的值。如果你在这一行的末尾放一个分号,它也是可以修复的:
简化版
所以
method hash:
仍然是一个不确定的语法,在模板中不太明显。只需使用括号:https://bugs.ruby-lang.org/issues/18396