ピグミー奮闘記。プログラミングと趣味の日記。

プログラミングと趣味についてあれこれ思考を記録するブログ!

フォームにグレーで初期値を表示させる

こんにちは!
今日も学んだことを記録しておこうと思います!

フォームにグレーで初期値を表示させる!

さて、フォームに初期値を表示したいと思い、まず初めに思いついた方法は、
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に初期値を指定しておく方法が便利」
というのが本日学んだことです。
勉強になった!引き続き頑張ります。