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

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

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

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

Ruby on Rails

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

ルーティング

ルーティングとは、TCP/IPネットワークにおいて、目的のホストまでパケットを送る為のパス選定のプロセスを言います。

Q&A

1回答

788閲覧

Routing Errornの解決方法を教えて下さい!

nozomi-hasei

総合スコア0

Ruby

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

Ruby on Rails

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

ルーティング

ルーティングとは、TCP/IPネットワークにおいて、目的のホストまでパケットを送る為のパス選定のプロセスを言います。

0グッド

0クリップ

投稿2021/01/24 15:33

解決したいこと

Ruby on Rails にてアプリケーションの試作品を共有するwebアプリを作っています。
deviseを導入、データベース(SequelPro)構築完了
新規登録ページで項目を入力をし新規登録ボタンを押すと以下エラーが発生します。
解決方法を教えてください。

発生している問題・エラー

Routing Error No route matches [POST] "/user/sign_up.user"

8427bea09951245dd129ce93393ea67f.png

該当するソースコード

ruby

1routes.rb 2 3Rails.application.routes.draw do 4 devise_for :user 5 root to: "prototypes#index" 6 get 'prototypes/index' 7 resources :users, only: :show 8end 9

ruby

1application.html.erb 2 3<!DOCTYPE html> 4<html> 5 <head> 6 <meta name="viewport" content="width=device-width, initial-scale=1.0" /> 7 <title>ProtoSpace</title> 8 <%= csrf_meta_tags %> 9 <%= csp_meta_tag %> 10 <link rel="stylesheet" type="text/css" href="http://yui.yahooapis.com/3.18.1/build/cssreset/cssreset-min.css"> 11 <%= stylesheet_link_tag 'application', media: 'all', 'data-turbolinks-track': 'reload' %> 12 <%= javascript_pack_tag 'application', 'data-turbolinks-track': 'reload' %> 13 <link href="https://fonts.googleapis.com/css?family=Noto+Sans+JP:400,700,900&display=swap" rel="stylesheet"> 14 </head> 15 16 <body> 17 <header class="header"> 18 <div class="inner"> 19 <div class="nav"> 20 <div class="nav__left"> 21 <%= link_to image_tag("logo.png", class: :logo), root_path %> 22 </div> 23 <% if user_signed_in? %> 24 <div class="nav__right"> 25 <%= link_to "ログアウト", destroy_user_session_path, class: :nav__logout %> 26 <%= link_to "New Proto", root_path, class: :nav__btn %> 27 </div> 28 <% else %> 29 <div class="nav__right"> 30 <%= link_to "ログイン", user_session_path, class: :nav__btn %> 31 <%= link_to "新規登録", new_user_registration_path, class: :nav__btn %> 32 </div> 33 <% end %> 34 </div> 35 </div> 36 </header> 37 <%= yield %> 38 <footer class="footer"> 39 <p class="copyright">Copyright © PROTO SPACE All rights reserved.</p> 40 </footer> 41 </body> 42</html>

ruby

1application_controller.rb 2 3class ApplicationController < ActionController::Base 4 5 before_action :configure_permitted_parameters, if: :devise_controller? 6 before_action :authenticate_user! 7 private 8 def configure_permitted_parameters 9 devise_parameter_sanitizer.permit(:sign_up, keys: [:email, :encrypted, :name, :profile, :occupation, :position]) 10 end 11end 12

ruby

1registrations 2new.html.erb 3 4<div class="main"> 5 <div class="inner"> 6 <div class="form__wrapper"> 7 <h2 class="page-heading">ユーザー新規登録</h2> 8 9 <%# 「モデル名」にはUserモデルであれば@userを渡しましょう。%> 10 <%# 「新規登録機能へのパス」は、devise導入後にrails routesを実行してdevise/registrations#createへのパスを確認し、記載してください。 %> 11 <%= form_with model: resource, as: resource_name, url: new_user_registration_path(resource_name), local: true do |f| %> 12 13 <div class="field"> 14 <%= f.label :email %><br /> 15 <%= f.email_field :email, autofocus: true, autocomplete: "email" %> 16 </div> 17 18 <div class="field"> 19 <%= f.label :password %> 20 <% if @minimum_password_length %> 21 <em>(<%= @minimum_password_length %> characters minimum)</em> 22 <% end %><br /> 23 <%= f.password_field :password, autocomplete: "new-password" %> 24 </div> 25 26 <div class="field"> 27 <%= f.label :password_confirmation %><br /> 28 <%= f.password_field :password_confirmation, autocomplete: "new-password" %> 29 </div> 30 31 <div class="field"> 32 <%= f.label :name %><br /> 33 <%= f.text_field :name %> 34 </div> 35 36 <div class="field"> 37 <%= f.label :profile %><br /> 38 <%= f.text_area :profile, class: :form__text %> 39 </div> 40 41 <div class="field"> 42 <%= f.label :occupation %><br /> 43 <%= f.text_area :occupation, class: :form__text %> 44 </div> 45 46 <div class="field"> 47 <%= f.label :position %><br /> 48 <%= f.text_area :position, class: :form__text %> 49 </div> 50 51 <div class="actions"> 52 <%= f.submit "新規登録", class: :form__btn %> 53 </div> 54 <% end %> 55 </div> 56 </div> 57</div>

ruby

1model 2user.rb 3 4class User < ApplicationRecord 5 # Include default devise modules. Others available are: 6 # :confirmable, :lockable, :timeoutable, :trackable and :omniauthable 7 devise :database_authenticatable, :registerable, 8 :recoverable, :rememberable, :validatable 9 validates :text, presence: true 10 11 has_many :prototype 12 has_many :comments 13 14end

自分で試したこと

エラー文よりルーティングの指定先が合致していないという仮説を立てて
pathの確認を行ったが間違いは見つけられませんでした。
また同じような現象がないか検索をして見ると
解決策はパスの指定であることが多いと分かったが解決に導くことが出来なかった。

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

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

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

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

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

m.ts10806

2021/01/24 20:46

>pathの確認を行ったが間違いは見つけられませんでした。 ではどこに、POSTで、/user/sign_up.userを受けるルーティングの記述があるつもりですか?
nozomi-hasei

2021/01/25 15:30

ご指摘ありがとうございます。 まだまだ勉強不足でとんちんかんな質問と確認を行っていたみたいです。 devise_for :userにてdeviseのルーティング設定は完了していると思っていました。 そこでconfig/routes.rbにて post '/user/sign_up' => 'devise/registrations#create' という受け取るコードを記述をしてみました。 またapp/views/devise/registrations/new.html.erbにて <%= form_with model: @user, url: user_registration_path, local: true do |f| %> のURLも上記に伴い変更してみました。 次は違うエラーが発生したので、今回のエラーが解決したのかがまだ確証がありませんが、前に進むことが出来ました。 勉強させていただきありがとうございました。
guest

回答1

0

<%= form_with model: の行のurl: new_user_registration_path(resource_name)に違和感があります。
ここoriginal通りですか?

投稿2021/01/24 22:52

winterboum

総合スコア23567

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

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

nozomi-hasei

2021/01/25 15:35

ご回答ありがとうございます。 ご指摘いただいたパスが間違っておりました。 正しくはuser_registration_pathでした。 また他の方からのご指摘でルーティングの記述も抜けていることがわかりました。新たなエラーがすぐ発生したので、解決した確証はありませんが前には進めることが出来ました。ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問