読者です 読者をやめる 読者になる 読者になる

ハッシュ値の生成で改行をセットするとエラーになる

Ruby Ruby on Rails

秋というのはメランコリックになるのでしょうか。ってそんな がら でもないのですが、少し残念なことがあって心理的に弱っています。 (意外とナイーブな自分が笑えてきますw)

ともかく、弱っているときはコードを書くことにつきますね。JavaScriptのお勉強は放置してひたすらRuby、Ruby、Ruby…。

Functionlalテストを記述しているのですが、その際にパラメータに日付をセットします。リクエストパラメータでこの日付はそれぞれ年月日に分解されて保持されているのでそのようなハッシュを生成しているのですが、このハッシュが長い…。長いので、コードを読みやすくするため改行を入れてみました。

[sourcecode language="ruby"]

このようにハッシュの生成で改行を入れるとエラーになる

params = {:shiharaibi_from => {:year => SHIHARAIBI_FROM_YEAR, :month => SHIHARAIBI_FROM_MONTH, :day => SHIHARAIBI_FROM_DAY} , :shiharaibi_to => {:year => SHIHARAIBI_TO_YEAR, :month => SHIHARAIBI_TO_MONTH, :day => SHIHARAIBI_TO_DAY}} [/sourcecode]

するとどうでしょう。RubyMineがエラーだよと赤くなります…。これはブロックだからエラーになるのか、ハッシュの生成句だからエラーになるのかわかりませんが、とにかくエラーになります。仕方がないので、ハッシュの生成を外へ出してみます。

[sourcecode language="ruby"]

From ハッシュは年月日をセットする

shiharaibi_from = {:year => SHIHARAIBI_FROM_YEAR, :month => SHIHARAIBI_FROM_MONTH, :day => SHIHARAIBI_FROM_DAY}

To ハッシュは年月日をセットする

shiharaibi_to = {:year => SHIHARAIBI_TO_YEAR, :month => SHIHARAIBI_TO_MONTH, :day => SHIHARAIBI_TO_DAY}

パラメータにハッシュをセット

params = {:shiharaibi_from => shiharaibi_from, :shiharaibi_to => shiharaibi_to} [/sourcecode]

これでうまくいきますね。まぁ、いくら書きやすいからと言ってワンライナーにこだわる必要もないのでわかりやすくしたの記述で書くことに…。