プロフィール更新のためのフォーム
app/views/profiles/edit.html.haml エラーメッセージ.container
%ul
- @profile.errors.full_messages.each do |message|
%li= message
app/views/articles/_form.html.haml
ここからコピペしてきた
%ul
- article.errors.full_messages.each do |message|
%li= message
app/controllers/profiles_controller.rb
def edit
@profile = current_user.build_profile
end
からの箱(インスタンス)を作る。
app/views/profiles/edit.html.haml
= form_with(model: @profile, url: profile_path, method: 'put', local: true) do |f|
ラウツのPOST
%div
= f.label :nickname, 'ハンドルネーム'
%div
= f.text_field :nickname, class: 'text'
%div
= f.label :introduction, '自己紹介'
%div
= f.text_area :introduction
次に性別を選択を作成
そもそも、マイグレーションファイルにて、性別部分をinteger:整数にしていました。
それはなぜなのか?
文字列を入れてしまうと、はじめに、男・女で定義していたが、途中から男性に変えたい!となると、パターンが増えてしまう。
しかし、0・1にしておけば、後から変更しても表示を男性に変えるだけで良い👍
app/models/profile.rb
enum gender: { male: 0, female: 1, other: 2 }
app/views/profiles/edit.html.haml
%div
= f.label :gender, '性別'
%div
= f.select :gender,['mele', 'female', 'other']
配列にするのが、一番簡単
しかし、モデルで何か追加された時など変更が起きた時に、ここを変えるを忘れてしまう可能性が出てきしまう。
$rails c
立ち上げ
$Profile
$Profile.genders
{"male"=>0, "female"=>1, "other"=>2}
enumを定義しているので、ハッシュが手に入る
$Profile.genders.keys
["male", "female", "other"]
というハッシュも手に入る
= f.select :gender, Profile.genders.keys, {}, { class: 'text' }
よって、こうしても、同じことをすることができる。
また、classは第四引数に、定義しなければならない!!
app/assets/stylesheets/form.scss
また、input部分に、selectを追加👍
次に生年月日
app/views/profiles/edit.html.haml
%div
= f.label :birthday, '生年月日'
%div
= f.date_field :birthday, class:'text'
通知を受け取るボタンと保存ボタン
%div
= f.label :subscribed, '通知を受け取る'
= f.check_box :subscribed
= f.submit '保存', class: 'btn-primary'
これで、フォームの完成!