Rails

Railsでform_tagを利用する際のclassの反映の仕方

状況

まず、状況として、Railsを利用してformを作成する時に、どうしてもcssを反映させたかったのでclassを使って反映させる必要がありました。
しかし、ドキュメントをみて試行錯誤してもうまくいきませんでした。結果的にある記事を参考にさせていただいた結果うまくいきました。

環境

Rails 5
slimを使用

具体例

 = form_tag XXXXX_path do 
   = text_field_tag :name, class: 'index__form--text-feild'

これだとなぜか、textfieldの中にvalueとしてclassが入ってしまい、結果的に

<input type="text" name="name" id="name" value="{:class=>index__form--feild}">

となってしまいます。

解決策

そこで、valueを一旦空白で用意する事でこれを解決します。具体的に示すと、

 = form_tag XXXXX_path do 
   = text_field_tag :name, '', class: 'index__form--text-feild'

とすることで

<input type="text" name="name" id="name" value="" class="index__form--text-feild">

となります。

結論

valueが絶対に用意されてしまうので、そこを空白の形で用意してあげるとうまくそれ以降のオプションが反映されるみたいです。

参考文献

こちらの記事を参考にさせていただきました。ありがとうございました。
http://mikamisan.hatenablog.com/entry/2016/02/29/214930