0

中括弧ブロック構文を使用しようとすると構文エラーが発生する理由を誰でも知っていますRails.cache.fetch

これはエラーでエラーになります (構文エラー、予期しない '{'、keyword_end (SyntaxError) を予期しています)

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

以下の作品:

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

2 に答える 2

0

短いブロックは、次のように見える構文を認識する前に () が必要です

Rails.cache.fetch("person/#{id}") { find(id) }
于 2012-08-16T18:04:48.760 に答える
0

これは、{} と end の優先順位が異なるためです。最初の式では、式の「person/#{id}」部分に関連付けられています。

したがって、最初の例は次のようになります。

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

2番目は次のとおりです。

Rails.cache.fetch("person/#{id}") { find(id) }
于 2012-08-16T18:05:03.380 に答える