フォームにグレーで初期値を表示させる
こんにちは!
今日も学んだことを記録しておこうと思います!
フォームにグレーで初期値を表示させる!
さて、フォームに初期値を表示したいと思い、まず初めに思いついた方法は、
Controllerでモデルのインスタンスを生成するときに、デフォルト値を設定しておくというものでした。
ひとまず、やってみました。
方法1:コントローラでインスタンス生成時にデフォルト値を設定する
Controller
def new @recipe = current_user.recipes.build(title:'レシピタイトルを入力', content:'レシピコメントを入力', volume:'分量(〜人分)を入力') @recipe.ingredients.build(name:'材料名', amount:'分量') @recipe.instractions.build(content:'作り方を入力') end
としてみました。これでフォームにはあらかじめ初期値が入力された状態で表示されるかなと。
結果:表示されました!でも、気に入らない・・・
初期値として設定した文章が、フォームに黒文字で表示されており、入力する際にその文字をいちいち削除しないとならないのです。
そこで、もっといい方法として、次に試したことは、
方法2:フォームにplaceholderで初期値を設定しておく
_form.html.erb
<%= form_for(recipe) do |f| %> <%= f.label :name, 'レシピタイトル' %> <%= f.text_area :title, class: placeholder:'レシピタイトルを入力' %> <%= f.label :name, 'このレシピについて' %> <%= f.text_area :content, class: placeholder: 'レシピコメント(おすすめポイントなど)' %> <%= f.label :name, '分量(〜人分)' %> <%= f.number_field :volume, class: placeholder: '〜人分、整数で入力(例:3)' %> <%= f.submit 'Post' %> <% end %> #(必要な部分のみ抜粋)
結果:初期値がグレーで表示された!入力を始めると初期値は勝手に消えてくれる。
無事フォームにグレーの初期値を表示させることができました。素敵!
というわけで、
「placeholderに初期値を指定しておく方法が便利」
というのが本日学んだことです。
勉強になった!引き続き頑張ります。