0
0

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 1 year has passed since last update.

ユーザのプロフィールページ③

Last updated at Posted at 2023-03-13

プロフィール更新のためのフォーム

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'

これで、フォームの完成!

0
0
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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?