状況
実行してみると、変数が代入されるべきところには、変数の名前が入っていて、変数が展開されていませんでした。
redirect '/browse/"#{@isbn}"/"#{@id}"'
が、
/browse/#{@isbn}/#{@id}
となってしまいます。
原因
ダブルクォーテーション「 " 」と、シングルクォーテーション「 ' 」の違いとは?
シングルクォートでは#{}という特殊文字の解釈が行われません。そのため、変数や定数の展開は行われません。文字をそのまま表示したい時に使えばよいのではないでしょうか。ダブルクォーテーションでは、展開がされます。日本語文字もダブルクォーテーションで囲むため、基本はダブルクォーテーションを使うようにすれば良いのではないでしょうか。
ただ、この違いを知っておくと、必要なときに使い分けられるため、プログラム技術の向上につながります。このような違いも知っていくことが、優秀なプログラマーへと繋がるのではないでしょうか。
対処
こちらのサイトが、この記事で書いていることの参考になると思います。
(この質問サイトもおすすめです)
【sinatra】変数を使ったパス指定ができない
0 件のコメント:
コメントを投稿