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

form_tagのオプションの付け方で毎回迷う。というかRubyきらい。

題の通り。
毎回毎回エラー吐かれて腹が立つのでメモ。

何やら単純な話で、form_tagは引数が必ず2つということを覚えておけばいいらしい。
つまり、

<%= form_tag('/estates/search', {method: :get, id: 'search-form'}) do %>

こういうこと!
第一引数にアクションを、第二引数にその他のオプションを全てぶち込んでやる。

ただこのform_tagの分かりづらいところは、

<%= form_tag('/estates/search', method: :get, id: 'search-form') do %>

でも通ってしまうところ。

はっきり言いますとね、自分はRubyが大嫌いです。
TMTOWTDIとか糞食らえって思うわけです。
Perl書く人には大変申し訳ないですが……。
これはもう信仰の問題ですけど、プログラミングにおいてやり方が複数あることの利点を自分は感じません。
やり方はひとつ。There's one way.がベストです。
神に誓って。

私が最近の若者だから急にキレだしたわけではありません。
後者のform_tagって初見だったらどう考えてもおかしいでしょう。
引数3つあんじゃん。可変引数なのこれ?とか思うでしょ普通。

実はRubyって最後の引数がハッシュだったら波括弧が省略可能らしいんですよ。
そういう解釈がされるもんだから、後者の記述でも内部的には引数が2つのメソッド呼び出しだと、Rubyは言うわけです。
これ、波括弧省略する意味ありますか?
どう考えても波括弧あったほうが分かりやすいでしょ?
どっちでもいいよーじゃないんだよどっちかにしろ、というかちゃんとカッコは着けろ。

メソッド呼び出しでカッコの省略が可能なことも自分的には非常に気に入りません。
そのカッコの省略によるタイプ数の減少で得るものがあまりにも微小すぎる癖に、失うものは山ほどあるように思うからです。

以上言語へのイライラでしたとさ。

参考
form_tag - リファレンス - Railsドキュメント
Railsのform_tagで生成されるHTML - maeharinの日記
Railsを触る際知っていると便利なRubyの基礎 [ブロックとかシンボルとか] - Qiita