スリ飯屋Malankaのフリーエンジニアな日々

IT実務未経験から約1年、東京でフリーランスのRuby on Railsエンジニアに転職。約2年半、大阪中崎町でスリランカカレーの間借りしてました。フリーランスエンジニアになるためのノウハウ、スリランカの事を発信していきます。

【Rails】audio_tagのsrc属性の値に + を含めるとエラーになる

【Rails】audioタグのsrc属性の値に + を含めるとエラーになる

jsで、audio_tagで出力されるaudio要素のsrc属性に値を代入していた。

値は以下のようなDateTime型の値を含んだファイル名。

[12] pry(main)> DateTime.now
=> Tue, 14 Jan 2020 08:02:15 +0900

が、audio要素のsrc属性でエラーになる。

値がDate.todayのようなDate型を含んだファイル名だとエラーにならない。

[11] pry(main)> Date.today
=> Tue, 14 Jan 2020

調査していくと、srcの値に + が含まれているとエラーになることがわかった。

DateTimeにはタイムゾーンの +09:00+が含まれているのでエラーになる。

Dateには + が含まれていないので実行出来る。

そのため、strftimeでタイムゾーンの部分を除去することで対応しました。

DateTime.now.strftime('%Y-%m-%d_%H:%M:%S')

除去した結果を確認します。

[13] pry(main)> DateTime.now.strftime('%Y-%m-%d_%H:%M:%S')
=> "2020-01-14_08:09:11"

strftimeでフォーマットされ、+ が除去できました。

この値をファイル名に入れることで、DateTime型のような値でもaudioタグのエラーが解消出来ました。