式展開のある記述では、”” ダブルクオーテーションを使え。
# 問題です。
どちらが正しいでしょうか?
A:
redirect to("/memos/#{params[:id]}")
B:
redirect to(‘/memos/#{params[:id]}’)
答えはCMのあとで。
# 答えの時間
⭕️:
```rb
redirect to("/memos/#{params[:id]}")
```
❌:
```rb
redirect to('/memos/#{params[:id]}')
```
# なぜシングルクォーテーションではだめなのか
例えば、
```rb
redirect to('/memos')
```
はルーティング問題ありませんでした。
これの上との違いといえば、式展開してますね。
ということで、確認。
[リファレンス](https://docs.ruby-lang.org/ja/latest/doc/spec=2fliteral.html)
> 文字列リテラル
例:
"this is a string expression\n"
'this is a string expression\n'
%q!I said, "You said, 'She said it.'"!
%!I said, "You said, 'She said it.'"!
%Q('This is it.'\n)
"this is multi line
string"
文字列はダブルクォートまたはシングルクォートで囲まれています。ダブルクォートで囲まれた文字列ではバックスラッシュ記法と式展開(後述)が有効になります。シングルクォートで囲まれた文字列では、 \\ (バックスラッシュそのもの)と \' (シングルクォート) を除いて文字列の中身の解釈は行われません。シングルクォートで囲まれた文字列では行末の \ は \ そのものとして解釈されます。
複数行にわたって書くこともできます。この場合含まれる改行文字は常に\nになります。実際のソースファイルの改行コードとは無関係です。
空白を間に挟んだ文字列リテラルは、コンパイル時に1つの文字列リテラルと見倣されます。
らしいです。
ちなみに↓
# 参考記事
https://qiita.com/ryosuketter/items/ddad508cb0124e4fe378
https://necojackarc.hatenablog.com/entry/2015/09/12/220832
今後、””派になろうかと思います。
以上です。