DeviseでProfile編集をDHH流ルーティングで行う

投稿者: | 2019年9月17日

Devise の User に Profile を紐付けるところができたので、Profile を参照したり編集する Controller と View を作っていきます。

Devise デフォルトのユーザIDやパスワード、email の編集画面もマージして以下のような画面で参照し、編集リンクからそれぞれを個別に編集できるようにします。また、Deivseのユーザ情報編集では 1画面でユーザ名やパスワード、email の編集が行えましたが、パスワードの変更しないときにも confirm パスワードを入れていて、パスワード変更と紛らわしいので、それぞれ画面をわけてしまう方向で実装します。

 

アカウントコントローラの作成

Deviseのユーザ情報と、Profile 情報の表示用のコントローラとして Account コントローラを作成します。 個々の値の編集は、それぞれに対応したコントローラを定義して対応します。いわゆる DHH 流ルーティングで実装していきます。

参照:  DHHはどのようにRailsのコントローラを書くのか

Account Controller の作成

アカウントコントローラを作成します。

次に、ルーティングを編集します。

ルーティング確認

Account コントローラを編集します。

Account/show の View を編集します。

こんな画面が見えるようになります。

Profile 中の name を編集可能にする

次に、Profile 中の name を編集するコントローラと画面を作成します。

ルーティング設定

DHH 流のルーティングを行います。account/name に対して GET と PUT/PATCH で編集用画面と編集を行えるように account の下に name を定義します。edit で編集用画面の表示、update で edit 画面で submit した際の編集の実行です。

ルーティング確認

コントローラの作成

ルーティングが追加されてしまいますが、すでに設定しているので、上記で追加されたルーティングは削除してください。

コントローラの編集

View の編集

ここまでで、rails サーバを再起動して、account/name/edit を叩けば名前編集画面が表示され、名前が編集できると思います。

account 画面のリンク設定

上記までで名前の編集が行えることが確認できたら、account 画面の名前の「編集」リンクに、上記画面へのリンクを張っておきます。

 

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です