中括弧ブロック構文を使用しようとすると構文エラーが発生する理由を誰でも知っていますRails.cache.fetch
これはエラーでエラーになります (構文エラー、予期しない '{'、keyword_end (SyntaxError) を予期しています)
Rails.cache.fetch "person/#{id}" { find(id) }
以下の作品:
Rails.cache.fetch "person/#{id}" do
find(id)
end
中括弧ブロック構文を使用しようとすると構文エラーが発生する理由を誰でも知っていますRails.cache.fetch
これはエラーでエラーになります (構文エラー、予期しない '{'、keyword_end (SyntaxError) を予期しています)
Rails.cache.fetch "person/#{id}" { find(id) }
以下の作品:
Rails.cache.fetch "person/#{id}" do
find(id)
end
短いブロックは、次のように見える構文を認識する前に () が必要です
Rails.cache.fetch("person/#{id}") { find(id) }
これは、{} と end の優先順位が異なるためです。最初の式では、式の「person/#{id}」部分に関連付けられています。
したがって、最初の例は次のようになります。
Rails.cache.fetch("person/#{id}" { find(id) })
2番目は次のとおりです。
Rails.cache.fetch("person/#{id}") { find(id) }