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

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

新規登録して質問してみよう
ただいま回答率
85.35%
Devise

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

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Ruby on Rails

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

ログイン

ログインは、ユーザーがコンピューターシステムにアクセスするプロセスの事を呼びます。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

解決済

1回答

801閲覧

2つのdeviseを導入時に1つのアカウントは新規会員登録できるがもう一つが登録画面にいかない。

kinpin

総合スコア4

Devise

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

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Ruby on Rails

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

ログイン

ログインは、ユーザーがコンピューターシステムにアクセスするプロセスの事を呼びます。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

0グッド

0クリップ

投稿2020/08/26 10:00

編集2020/08/26 13:17

アプリケーションを作成しています。
deviseを2つ作って userとdoctorでログイン画面を分けています。

userの方では新規登録画面に遷移し登録、ログインができますが、もう一つのdoctorの新規会員登録画面にいくと元のdoctors/index画面に戻ってしまいます。

ルーティングパス、ビューの準備はできましたが、何が原因かわかりません。。

ruby '2.6.5'
rails, '6.0.0'

routes.rb

ruby

1 2Rails.application.routes.draw do 3 devise_for :doctors, controllers: { 4 sessions: 'doctors/sessions', 5 passwords: 'doctors/passwords', 6 registrations: 'doctors/registrations' 7 } 8 devise_for :users, controllers: { 9 sessions: 'users/sessions', 10 passwords: 'users/passwords', 11 registrations: 'users/registrations', 12 13 } 14 resources :users, only: [:index, :show] 15 resources :doctors, only: [:index, :show] 16 root to: 'medicines#index' 17 resources :medicines 18end 19

doctors/registrations/new.html.erb

ruby

1 2<%= form_with model:@doctor, url: doctor_registration_path, class: 'registration-main', local: true do |f| %> 3 <%= render "devise/shared/error_messages", resource: resource %> 4 <h2>新規登録</h2> 5 <div class="field"> 6 <%= f.label :doctor_name, class:"input-default" %><br /> 7 <%= f.text_field :doctor_name, class:"input-default", autofocus: true, autocomplete: "doctor_name" %> 8 </div> 9 10 11 <div class="field"> 12 <%= f.label :email, class:"input-default" %><br /> 13 <%= f.email_field :email, class:"input-default", autofocus: true, autocomplete: "email" %> 14 </div> 15 16 <div class="field"> 17 <%= f.label :password, class:"input-default" %> 18 <% if @minimum_password_length %> 19 <em>(<%= @minimum_password_length %> characters minimum)</em> 20 <% end %><br /> 21 <%= f.password_field :password, class:"input-default", autocomplete: "new-password" %> 22 </div> 23 24 <div class="field"> 25 <%= f.label :password_confirmation, class:"input-default" %><br /> 26 <%= f.password_field :password_confirmation, class:"input-default", autocomplete: "new-password" %> 27 </div> 28 29 <div class="field"> 30 <%= f.label :experience, class:"input-default"%><br /> 31 <%= f.text_field :experience, class:"input-default", autocomplete: "experience" %> 32 </div> 33 34 <div class="field"> 35 <%= f.label :special_field, class:"input-default" %><br /> 36 <%= f.text_field :special_field, class:"input-default", autocomplete: "special_field" %> 37 </div> 38 39 <div class="field"> 40 <%= f.label :message, class:"input-default" %><br /> 41 <%= f.text_area :message, class:"input-default", autocomplete: "special_field" %> 42 </div> 43 44 <div class="actions"> 45 <%= f.submit "Sign up" %> 46 </div> 47<% end %> 48</div>

users/registrations/new.html.erb

ruby

1<div class="new-maim"> 2<%= form_with model: @user, url: user_registration_path, class: 'registration-main', local: true do |f| %> 3 <%= render "devise/shared/error_messages", resource: resource %> 4 <h2>Sign up</h2> 5 <div class="field"> 6 <%= f.label :nickname, class:"title-default" %><br /> 7 <%= f.text_field :nickname, class:"input-default", autofocus: true, autocomplete: "nickname" %> 8 </div> 9 10 11 <div class="field"> 12 <%= f.label :email, class:"title-default" %><br /> 13 <%= f.email_field :email, class:"input-default", autofocus: true, autocomplete: "email" %> 14 </div> 15 16 <div class="field"> 17 <%= f.label :password, class:"title-default" %> 18 <% if @minimum_password_length %> 19 <em>(<%= @minimum_password_length %> characters minimum)</em> 20 <% end %><br /> 21 <%= f.password_field :password, class:"input-default", autocomplete: "new-password" %> 22 </div> 23 24 <div class="field"> 25 <%= f.label :password_confirmation, class:"title-default" %><br /> 26 <%= f.password_field :password_confirmation, class:"input-default", autocomplete: "new-password" %> 27 </div> 28 29 <div class="field"> 30 <%= f.label :gender, class:"title-default"%> 31 <%= f.collection_select(:gender_id, Gender.all, :id, :name, {prompt: "--------"}, {class:"input-default-pull"}) %> 32 <%= f.label :bloodtype, class:"title-default" %> 33 <%= f.collection_select(:bloodtype_id, Bloodtype.all, :id, :name, {prompt: "--------"}, {class:"input-default-pull"}) %> 34 </div> 35 36 <div class="field"> 37 <%= f.label :birth, class:"title-default" %><br /> 38 <%= f.password_field :birth, class:"input-default", autocomplete: "birth" %> 39 </div> 40 41 <div class="field"> 42 <%= f.label :emergencyperson, class:"title-default" %><br /> 43 <%= f.password_field :emergencyperson, class:"input-default", autocomplete: "emergencyperson" %> 44 </div> 45 46 <div class="field"> 47 <%= f.label :emergencycall, class:"title-default"%><br /> 48 <%= f.password_field :emergencycall, class:"input-default", autocomplete: "emergencycall" %> 49 </div> 50 51 <div class="btn-field"> 52 <%= f.submit "Sign up", class:"input-default" %> 53 </div> 54<% end %> 55<%= render "devise/shared/links" %> 56</div> 57

doctors/index.html.erb

<div class="doctor-access"> <div class="user-nav"> <%= image_tag "doctor.jpg", class:"main-pict" %> <% if user_signed_in? %> <div class="user_nav grid-6"> <%= link_to "ログアウト", destroy_doctor_session_path, method: :delete %> <%= link_to "投稿する", destroy_doctor_session_path, class: "post" %> </div> <% else %> <div class="btn-icon-nav"> <%= link_to new_doctor_session_path do %> <div class="btn-icon"> <p>ログイン</p> </div> <% end %> <%= link_to new_doctor_registration_path do %> <div class="btn-icon"> <p>新規会員登録</p> </div> <% end %> </div>

ruby

1class DoctorsController < ApplicationController 2 def index 3 end 4 5 def new 6 @doctor = Doctor.new 7 end 8 9 def create 10 @doctor = Doctor.new(doctor_params) 11 if @doctor.save 12 redirect_to doctor_path 13 else 14 render 'new' 15 end 16 17 def show 18 @doctorr = Doctor.find([:id]) 19 20 end 21 22 end 23 24 25 private 26 def doctor_params 27 params.require(:doctor).permit(:doctor_name, :email, :password) 28 end 29end 30

たくさんのコードになってしまいすみません。。。

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

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

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

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

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

naokit-dev

2020/08/26 10:07

doctors/indexから#newまでは遷移するのでしょうか? それとも#createのところでdoctors/indexにリダイレクトするのでしょうか? 加えてコントローラと `rails routes`の結果も知りたいです
kinpin

2020/08/26 10:30

コメントありがとうございます。 現在トップ画面でdoctorとuserのボタンで各doctors/indexとusers/indexに分かれていまして、 doctor/indexからのnewに遷移できません。 そしてリダイレクト先がトップ画面になります。 ターミナルでは Processing by Doctors::RegistrationsController#new as HTML Doctor Load (0.5ms) SELECT `doctors`.* FROM `doctors` WHERE `doctors`.`id` = 1 ORDER BY `doctors`.`id` ASC LIMIT 1 な情報が出ます。 Prefix Verb URI Pattern Controller#Action new_doctor_session GET /doctors/sign_in(.:format) doctors/sessions#new doctor_session POST /doctors/sign_in(.:format) doctors/sessions#create destroy_doctor_session DELETE /doctors/sign_out(.:format) doctors/sessions#destroy new_doctor_password GET /doctors/password/new(.:format) doctors/passwords#new edit_doctor_password GET /doctors/password/edit(.:format) doctors/passwords#edit doctor_password PATCH /doctors/password(.:format) doctors/passwords#update PUT /doctors/password(.:format) doctors/passwords#update POST /doctors/password(.:format) doctors/passwords#create cancel_doctor_registration GET /doctors/cancel(.:format) doctors/registrations#cancel new_doctor_registration GET /doctors/sign_up(.:format) doctors/registrations#new edit_doctor_registration GET /doctors/edit(.:format) doctors/registrations#edit doctor_registration PATCH /doctors(.:format) doctors/registrations#update PUT /doctors(.:format) doctors/registrations#update DELETE /doctors(.:format) doctors/registrations#destroy POST /doctors(.:format) doctors/registrations#create new_user_session GET /users/sign_in(.:format) users/sessions#new user_session POST /users/sign_in(.:format) users/sessions#create destroy_user_session DELETE /users/sign_out(.:format) users/sessions#destroy new_user_password GET /users/password/new(.:format) users/passwords#new edit_user_password GET /users/password/edit(.:format) users/passwords#edit user_password PATCH /users/password(.:format) users/passwords#update PUT /users/password(.:format) users/passwords#update POST /users/password(.:format) users/passwords#create 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 GET /users(.:format) users#index user GET /users/:id(.:format) users#show doctors GET /doctors(.:format) doctors#index doctor GET /doctors/:id(.:format) doctors#show root GET / medicines#index medicines GET /medicines(.:format) medicines#index POST /medicines(.:format) medicines#create new_medicine GET /medicines/new(.:format) medicines#new edit_medicine GET /medicines/:id/edit(.:format) medicines#edit medicine GET /medicines/:id(.:format) medicines#show PATCH /medicines/:id(.:format) medicines#update PUT /medicines/:id(.:format)
kinpin

2020/08/26 10:33

すみません。 rails routes が乱雑になっています。こちらが修正したものになります。 new_doctor_registration GET /doctors/sign_up(.:format) doctors/registrations#new new_doctor_session GET /doctors/sign_in(.:format) doctors/sessions#new
naokit-dev

2020/08/26 12:40

controllerの中身もお願いします 質問の方に貼っていただくと見易いです
kinpin

2020/08/26 12:50

かしこまりました。修正しました!
naokit-dev

2020/08/26 12:57

更新されてますか?
kinpin

2020/08/26 13:06

更新しましたが反映できてないみたいです。急いで更新できる様に対処します!
kinpin

2020/08/26 13:18

修正しました。teratailも不慣れで遅くなり申し訳ございません。
kinpin

2020/08/26 13:51

何度もご連絡してすみません。 フォーマットを修正しましたがダメでした。涙 引き続き、検索して検証してみます!!
guest

回答1

0

ベストアンサー

controllerのフォーマットエラーではないでしょうか?

class DoctorsController < ApplicationController def index end def new @doctor = Doctor.new end def create @doctor = Doctor.new(doctor_params) if @doctor.save redirect_to doctor_path else render 'new' end # end足りない def show @doctorr = Doctor.find([:id]) #doctor typo end end # endの位置 private def doctor_params params.require(:doctor).permit(:doctor_name, :email, :password) end end

diff

1class DoctorsController < ApplicationController 2 def index 3 end 4 5 def new 6 @doctor = Doctor.new 7 end 8 9 def create 10 @doctor = Doctor.new(doctor_params) 11 if @doctor.save 12 redirect_to doctor_path 13 else 14 render 'new' 15 end 16+ end #add end 17 18 def show 19- @doctor = Doctor.find([:id]) #doctor typo 20 end 21 22- end #remove end 23 24 25 private 26 def doctor_params 27 params.require(:doctor).permit(:doctor_name, :email, :password) 28 end 29end

追記

config/initializers/devise.rbに以下の記述はありますか?

config.scoped_views = true

投稿2020/08/26 13:43

編集2020/08/27 06:22
naokit-dev

総合スコア424

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

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

kinpin

2020/08/27 09:55

はい!入力しました。 もう一度form_withのあとのモデルのルーティングをやり直しましたら、なぜだか原因はわかりませんが解決いたしました。ありがとうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問