質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Ruby on Rails 5

Ruby on Rails 5は、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Devise

Deviseとは、Ruby-on-Railsの認証機能を追加するプラグインです。

Q&A

1回答

400閲覧

deviseでの新規登録画面について

yuzujoe

総合スコア49

Ruby on Rails 5

Ruby on Rails 5は、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Devise

Deviseとは、Ruby-on-Railsの認証機能を追加するプラグインです。

0グッド

0クリップ

投稿2018/11/06 22:48

##質問内容

deviseにおける新規登録についての質問です。

今回deviseのgemを使ってのuserの新規登録の際にviewを2つまたがってのユーザー登録になります。

viewの繊維としてはdevise/registration/new.html.erb→personal.html.erbになります。

画面の遷移はうまくいっているのですがnew.html.erbの内容を引き継いだままpersonal.html.erbに遷移する方法がわからず質問させて頂きました

routeはこうなっております

cancel_user_registration GET /users/cancel(.:format) users/registrations#cancel new_user_registration GET /users/sign_up(.:format) users/registrations#new edit_user_registration GET /users/edit(.:format) users/registrations#edit user_registration PATCH /users(.:format) users/registrations#update PUT /users(.:format) users/registrations#update DELETE /users(.:format) users/registrations#destroy POST /users(.:format) users/registrations#create users_personal POST /users/personal(.:format) users/registrations#personal

##試したこと
new.html.erbとpersonal.html.erbのform_forの記述など変なのかなと疑いましたが特に現状打開策が見つからずといった状況です

それぞれのform_forの部分を載せますので何かご意見を頂けますと幸いです

new.html.erb

<%= form_for( @user, url: {action: "personal", method: "post"}) do |f| %>

personal.html.erb

<%= form_for(resource, as: resource_name, url: registration_path(resource_name)) do |f| %>

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2018/11/07 04:48

なぜpersonalというページを用意し、複数のviewをまたぐ形を取る必要があるのか、newのフォームで一緒に入力するのではダメなのか、がよく分からないのでその辺りを追記していただきたいです。
yuzujoe

2018/11/07 05:43

今までその様に実装していたのですが今回試みで変えてみた方が下へのスクロールが減って同じ画面領域の中でできるんじゃないかとの考えが出て試しています。解決できないのであればmodelを分けるか同じnewで処理するかにしようと思っております。
退会済みユーザー

退会済みユーザー

2018/11/07 05:58

なるほど。提示されている情報が少ないので回答はでき兼ねますが、送信されたparamsは複数のアクションを跨ぐことができないので、newで送信されたパラメータをpersonalのフォームで再送信する必要があると思います。その辺りを確認してみてはいかがでしょうか。
yuzujoe

2018/11/07 06:07

ありがとうございます、パラメーターが引き継がれてないことを疑ってみて何度か違った取り組みしているのですが上手くいってないのでmodel処理分ける方向になるのかなと思っております。また質問内容に関しての指摘ありがとうございます。
guest

回答1

0

初学者レベルなので、変な事をいっていたら申し訳ないのですが…。

結論から申し上げますと、yuzujoeさんが実現したい機能を実装するためには、personal.html.erbで入力してもらう予定の情報を別のモデルに切り分けるのが有力な気がしております。
もちろん、その他の方法も検討しましたが、deviseの本体に随分と変更を加える必要があり、手間がかかるという判断です。
具体的な実装としては、user has one personal を定義して、registration/new.html.erbで登録してくれたuserがpersonalを保持していなければ、personal/new.html.erbに飛ばす、という形にするのが妥当だと思います。

この実装のメリットは「deviseの本体を修正する必要がない事」「railsの7つのアクションで完結させることができること」だと思います。

…いかがでしょうか?

投稿2018/11/07 02:37

take77

総合スコア130

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yuzujoe

2018/11/07 05:37

回答ありがとうございます!! その可能性の考慮もしたのですが今回この形で同じmodelに保存できないか考えてみて試していましてもし難しいようであればtake様の様な形で実装していきたいと思っております!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問