🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Ruby

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

Ruby on Rails 6

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

Q&A

解決済

1回答

3117閲覧

ActionController::UnknownFormat in Devise::RegistrationsController#createエラーの解決法

ryota1107

総合スコア6

Ruby

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

Ruby on Rails 6

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

0グッド

0クリップ

投稿2021/03/07 21:37

編集2021/03/08 00:14

前提・実現したいこと

Rails初心者です。
Rails6で、新規登録を行う際に、以下のエラーが出て困っております。
どのようにすれば、エラーを解消できるでしょうか?

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

ActionController::UnknownFormat in Devise::RegistrationsController#create ActionController::UnknownFormat

イメージ説明

applicationContoller

1class ApplicationController < ActionController::Base 2 before_action :basic_auth 3 before_action :configure_permitted_parameters, if: :devise_controller? 4 private 5 6 def basic_auth 7 authenticate_or_request_with_http_basic do |username, password| 8 username == 'admin' && password == '2222' 9 end 10 end 11 def configure_permitted_parameters 12 devise_parameter_sanitizer.permit(:sign_up, keys: [:nickname,:name,:height,:sex_id,:age]) 13 end 14end 15

userModel

1class User < ApplicationRecord 2 # Include default devise modules. Others available are: 3 # :confirmable, :lockable, :timeoutable, :trackable and :omniauthable 4 extend ActiveHash::Associations::ActiveRecordExtensions 5 devise :database_authenticatable, :registerable, 6 :recoverable, :rememberable, :validatable 7 has_many :Posts 8 belongs_to :sex 9 with_options presence: true do 10 validates :nickname 11 validates :name 12 validates :height 13 validates :age 14 validates :sex_id 15 16 validates :name, 17 format: {with:/\A[ぁ-んァ-ン一-龥]+\z/} 18 validates :height, 19 format: {with:/\A[0-9]+\z/} 20 validates :age, 21 format: {with:/\A[0-9]+\z/} 22 validates :password, 23 format:{with:/\A(?=.*?[a-z])(?=.*?[A-Z])(?=.*?[\d])\w{6,12}\z/} 24 validates :sex_id, numericality: { other_than: 1 } 25 end 26end 27

sexrb

1class Sex < ActiveHash::Base 2 self.data = [ 3 { id: 1, name: '--' }, 4 { id: 2, name: '男性' }, 5 { id: 3, name: '女性' }, 6 { id: 4, name: 'その他' }, 7 8 ] 9 include ActiveHash::Associations 10 has_many :users 11 end

deviseuser

1class DeviseCreateUsers < ActiveRecord::Migration[6.0] 2 def change 3 create_table :users do |t| 4 ## Database authenticatable 5 t.string :email, null: false, default: "" 6 t.string :encrypted_password, null: false, default: "" 7 t.string :nickname, null: false 8 t.string :name, null: false 9 t.integer :height, null: false 10 t.string :sex_id, null: false 11 t.integer :age, null: false 12 ## Recoverable 13 t.string :reset_password_token 14 t.datetime :reset_password_sent_at 15 16 ## Rememberable 17 t.datetime :remember_created_at 18 19 ## Trackable 20 # t.integer :sign_in_count, default: 0, null: false 21 # t.datetime :current_sign_in_at 22 # t.datetime :last_sign_in_at 23 # t.string :current_sign_in_ip 24 # t.string :last_sign_in_ip 25 26 ## Confirmable 27 # t.string :confirmation_token 28 # t.datetime :confirmed_at 29 # t.datetime :confirmation_sent_at 30 # t.string :unconfirmed_email # Only if using reconfirmable 31 32 ## Lockable 33 # t.integer :failed_attempts, default: 0, null: false # Only if lock strategy is :failed_attempts 34 # t.string :unlock_token # Only if unlock strategy is :email or :both 35 # t.datetime :locked_at 36 37 38 t.timestamps null: false 39 end 40 41 add_index :users, :email, unique: true 42 add_index :users, :reset_password_token, unique: true 43 # add_index :users, :confirmation_token, unique: true 44 # add_index :users, :unlock_token, unique: true 45 end 46end

試したこと

as: resource_nameを削除しましたがダメでした
devise_parameter_sanitizer.permit(:sign_up,keys: [:nickname,:name,:height,:sex_id,:age])
の後にredirect_toを記述してみたが
ログイン状態にならずにリダイレクトされただけでした。

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

データベースには保存はできています。
ですが画面はエラー画面になりindexのビューに戻りません。
ご教授お願いいたします!
イメージ説明

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

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

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

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

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

winterboum

2021/03/07 23:26

controllers/devise/registrations_controller.rbを載せてください
ryota1107

2021/03/07 23:30

コメントありがとうございます。 registrations_controller.rbが存在していません。 registrations_controller.rbを作成すれば良いのでしょうか? 無知で申し訳ありませんがご教授いただけると助かります。
ryota1107

2021/03/07 23:33

またdeviseのコントローラーはapplication_controllerで行うものと認識していましたが間違いだったでしょうか?
winterboum

2021/03/08 00:05

添付画像のTraceの2行めのファイルを見たいのですが。。。
ryota1107

2021/03/08 00:16

今追加でcontrollersのディレクトリの画像を貼らせていただいたのですが controllers/devise/registrations_controller.rbが存在しておらず探してみたのですが見つかりません。 コメントいただけたのに申し訳ありません。
guest

回答1

0

自己解決

ビューファイルのパスがdeviseのパスになっていなかったのが原因でした。
rails routes でパスを再確認して新規登録で登録完了!
初歩的なミスに時間がかかってしまった、、、

投稿2021/03/08 01:04

ryota1107

総合スコア6

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問