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

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

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

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

Q&A

解決済

1回答

6328閲覧

No route matches [GET] "/users" が出てしまい新規登録作成画面に遷移しない

Jakapin3

総合スコア1

Ruby on Rails

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

0グッド

0クリップ

投稿2021/01/26 05:21

編集2021/01/26 13:09

前提・実現したいこと

新規登録機能を実装中にトップページから新規登録のボタンを押すと
新規登録作成画面に遷移せずエラーメッセージが発生してしまい解消できません。
localhost:3000/user/sign_upに遷移できることが目標です。

発生している問題・エラーメッセージ

Routing Error No route matches [GET] "/users"

該当のソースコード

【routes.rb】 Rails.application.routes.draw do devise_for :users root to: "prototypes#index" resources :prototypes, only: [:index, :show, :new, :create, :destroy, :edit, :update,] do resources :comments, only: :create end end
【new.html.erb】 <div class="main"> <div class="inner"> <div class="form__wrapper"> <h2 class="page-heading">ユーザー新規登録</h2> <%= form_with model: @user, url: new_user_registration_path, local: true do |f| %> <div class="field"> <%= f.label :email, "メールアドレス" %><br /> <%= f.email_field :email, autofocus: true, autocomplete: "email" %> </div> <div class="field"> <%= f.label :password_confirmation, "パスワード(6文字以上)" %><br /> <%= f.password_field :password_confirmation, autocomplete: "new-password" %> </div> <div class="field"> <%= f.label :password_confirmation, "パスワード再入力" %><br /> <%= f.password_field :password_confirmation, autocomplete: "new-password" %> </div> <div class="field"> <%= f.label :user_name, "ユーザー名" %><br /> <%= f.text_field :user_name, autofocus: true %> </div> <div class="field"> <%= f.label :profile, "プロフィール" %><br /> <%= f.text_area :profile, class: :form__text %> </div> <div class="field"> <%= f.label :occupation, "所属" %><br /> <%= f.text_area :occupation, class: :form__text %> </div> <div class="field"> <%= f.label :position, "役職" %><br /> <%= f.text_area :position, class: :form__text %> </div> <div class="actions"> <%= f.submit "新規登録", class: :form__btn %> </div> <% end %> </div> </div> </div>
【user.controller.rb】 class UsersController < ApplicationController def create @user = User.new(params.require(:user).permit(:email, :password, :user_name, :email, :profile, :occupation, :position)) @user.save redirect_to users_path end def new @user = User.new end def show end end
【prototype_controller.rb】 class PrototypesController < ApplicationController before_action :set_prototype, only: [:show, :edit, :update, :destroy] before_action :move_to_index, except: [:index] def index @users = User.all end def new @prototype = Prototype.new end def create @prototype =prototypes.new(prototype_params) if @prototype.save redirect_to root_path, notice: '完了しました' else redirect_to new_prototype_path, alert: '完了していません' end end private def move_to_index unless user_signed_in? redirect_to action: :index end end end

routes

1new_user_session_path GET /users/sign_in(.:format) 2devise/sessions#new 3 4user_session_path POST /users/sign_in(.:format) 5devise/sessions#create 6 7destroy_user_session_path GET /users/sign_out(.:format) 8devise/sessions#destroy 9 10new_user_password_path GET /users/password/new(.:format) 11devise/passwords#new 12 13edit_user_password_path GET /users/password/edit(.:format) 14devise/passwords#edit 15 16user_password_path PATCH /users/password(.:format) 17devise/passwords#update 18 19PUT /users/password(.:format) 20devise/passwords#update 21 22POST /users/password(.:format) 23devise/passwords#create 24 25cancel_user_registration_path GET /users/cancel(.:format) 26devise/registrations#cancel 27 28new_user_registration_path GET /users/sign_up(.:format) 29devise/registrations#new 30 31edit_user_registration_path GET /users/edit(.:format) 32devise/registrations#edit 33 34user_registration_path PATCH /users(.:format) 35devise/registrations#update 36 37PUT /users(.:format) 38devise/registrations#update 39 40DELETE /users(.:format) 41devise/registrations#destroy 42 43POST /users(.:format) 44devise/registrations#create 45 46root_path GET / 47prototypes#index
【application.html.erb】 <!DOCTYPE html> <html> <head> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <title>ProtoSpace</title> <%= csrf_meta_tags %> <%= csp_meta_tag %> <%= stylesheet_link_tag 'application', media: 'all', 'data-turbolinks-track': 'reload' %> <%= javascript_pack_tag 'application', 'data-turbolinks-track': 'reload' %> <link href="https://fonts.googleapis.com/css?family=Noto+Sans+JP:400,700,900&display=swap" rel="stylesheet"> </head> <body> <header class="header"> <div class="inner"> <div class="nav"> <div class="nav__left"> <%= link_to image_tag("logo.png", class: :logo), root_path %> </div> <div class="nav__right"> <% if user_signed_in? %> <%= link_to "ログアウト", destroy_user_session_path, method: :delete, class: :nav__logout %> <%= link_to "New Proto", new_user_session_path, class: :nav__btn %> <% else %> <%= link_to "ログイン", user_session_path, class: :nav__btn %> <%= link_to "新規登録", user_registration_path, class: :nav__btn %> <% end %> </div> </div> </div> </header> <%= yield %> <footer class="footer"> <p class="copyright">Copyright © PROTO SPACE All rights reserved.</p> </footer> </body> </html>

試したこと

ネットにて同じような事案を調査して試してみましたが解決できませんでした。
routes.rbの記述が不足している?
初心者の為、整理できていません。アドバイス頂けると助かります。

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

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

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

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

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

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

m.ts10806

2021/01/26 05:26

タグが本件と関係ないものがつけられています。
Jakapin3

2021/01/26 05:34

返答ありがとうございます。 申し訳ございません。具体的にどこの部分でしょうか? 初心者すぎて申し訳ございません。
m.ts10806

2021/01/26 05:37

質問要件ではなく、質問につけられたタグの話です。 コードレビューはともかくteratailは関係ないです。 Ruby on Railsは必須ですね。 「質問するときのヒント」など確認し、適切なタグの付け方を検討してください。 質問は編集できますので、編集してください。
Jakapin3

2021/01/26 05:44

大変失礼しました! 丁寧に教えて頂きありがとうございます!
m.ts10806

2021/01/26 06:03

あと、一応確認です。 Railsチュートリアルは通しましたか?
Jakapin3

2021/01/26 06:11

まだやっておりません。プログラミングスクールのカリキュラムのみです。
winterboum

2021/01/26 12:20

新規登録作成画面に遷移 させるための 新規登録のボタン のあるviewを載せてください
Jakapin3

2021/01/26 12:30

こちらでよろしいでしょうか?
winterboum

2021/01/26 13:11

こちら  ってどちら?
Jakapin3

2021/01/26 13:25

app>views>devise>registrations>new.html.erb内にある <div class="actions"><%= f.submit "新規登録", class: :form__btn %>こちらでしょうか?
winterboum

2021/01/26 13:30

それは、データを入力して登録するときの、でしょう。 「新規登録作成画面に遷移せず」だからその画面がでない。 その画面をだすボタンはどのview?
Jakapin3

2021/01/26 13:52

何度も失礼しました。 app>views>layouts>application.html.erb内にある <%= link_to "新規登録", user_registration_path, class: :nav__btn %> こちらでよろしいでしょうか?
guest

回答1

0

ベストアンサー

user_registration_pathでなくnew_user_registration_pathにしてください。

投稿2021/01/26 23:03

winterboum

総合スコア23284

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

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

Jakapin3

2021/01/27 00:06

ありがとうございます。 昨日まではnewを入れて解消できませんでしたが、改めてnewを入れてから再起動する事で解消できました! 本当にありがとうございます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問