Rails缓存花括号块语法错误

时间:2012-08-16 18:02:09

标签: ruby-on-rails ruby-on-rails-3 memcached

当我尝试使用Rails.cache.fetch

的花括号块语法时,任何人都知道为什么会出现语法错误

此错误输出错误(语法错误,意外' {',期待keyword_end(SyntaxError))

Rails.cache.fetch "person/#{id}" { find(id) }

以下作品:

Rails.cache.fetch "person/#{id}" do
  find(id)
end

2 个答案:

答案 0 :(得分:0)

短块需要()才能识别它看起来像

的语法
Rails.cache.fetch("person/#{id}") { find(id) }

答案 1 :(得分:0)

这是因为{}具有与结束不同的优先级。在第一个表达式中,它们与表达式的“person /#{id}”部分相关联。

所以你的第一个例子类似于:

Rails.cache.fetch("person/#{id}" { find(id) })

而第二个是:

Rails.cache.fetch("person/#{id}") { find(id) }