7
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

railsのselectフォームでdisabled指定できなかったとき

Last updated at Posted at 2018-12-07

詰まったこと

railsでselectフォームを非活性にしたくて公式見に行ったら
スクリーンショット 2018-12-08 2.38.06.png
オプションに disabledをつけてくださいとのことだったので

_form.html.haml
%h3= f.label "学部・学課選択"
= f.collection_select :department_id, Department.all, :id, :name, disabled: true

ってやったんだけど、、、
スクリーンショット 2018-12-08 2.47.56.png
めっちゃ普通にいじれちゃう、、、ってなりました。
検証で見てみても
スクリーンショット 2018-12-08 2.50.06.png
やっぱりdisabledが付いてる気がしない、、、

解決方法

_form.html.haml
%h3= f.label "学部・学課選択"
= f.collection_select :department_id, Department.all, :id, :name, {}, disabled: true

結果としては空の引数を1つ渡してあげればいけました。
こうすると、クリックしても動かない非活性の状態になります
スクリーンショット 2018-12-08 2.51.05.png
画像だとわかりにくいので改めて検証で見てみると
スクリーンショット 2018-12-08 2.51.14.png
こんな感じでちゃんとdisabledのオプションが付いていることがわかります。

原因

改めて公式を見てみると
collection_select(オブジェクト名, プロパティ名, オブジェクトの配列, value属性の項目, テキストの項目 [, オプション])
となっていて、collection_selectのオプションはヘルパーメソッドの第6引数として渡していることがわかります。
ですが、最初の実装だと第5引数のところにオプションをのdisabledをつけてしまっていたのでうまく作動しなかったようです。

まとめ

忘れがちだけどrailsのform_forとかってあくまでrailsのhelperメソッドで
メソッド名(第1引数, 第2引数, ・・・) 
っていうのが勝手に定義されててそれを使ってるわけだから、引数渡すタイミング考えてあげないとそりゃちゃんと動かないよな笑

7
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?