はじめに
Rails 6 に追加されそうな新機能を試す第2段。 select
タグの prompt
を指定するときのちょい足し機能です。
記載時点では、Rails は 6.0.0.beta3 です。 gem install rails --prerelease
でインストールできます。
$ rails --version
Rails 6.0.0.beta3u``
単純なCRUD機能をscaffold で作る
新機能を試すために、scaffold で単純なCRUD機能を作ってみます。
$ rails new sandbox_6_0_0b3
$ cd sandbox_6_0_0b3
$ rails g scaffold User name
従来の機能
これまでは、 prompt
を設定した required な select
の prompt を disabled にすることができませんでした。
app/views/users/_form.html.erb
<%= form_with(model: user, local: true) do |form| %>
...
<div class="field">
<%= form.label :favorite_language %>
<%= form.select :favorite_language, ["Ruby", "Python", "JavaScript"], { prompt: "Choose Favorite Language" }, {required: true} %>
</div>
...
prompt で選択した文字列を選ぶことができてしまいます。
新機能
Rails 6 では、prompt を disabled にすることができます。
app/views/users/_form.html.erb
<%= form_with(model: user, local: true) do |form| %>
...
<div class="field">
<%= form.label :favorite_language %>
<%= form.select :favorite_language, ["Ruby", "Python", "JavaScript"], { selected: "", disabled: "", prompt: "Choose Favorite Language" }, {required: true}%>
</div>
...
参考情報
その他
あくまで、Viewの機能として試しているだけなので、 model に favorite_language の属性がないというツッコミは勘弁願います。