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

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

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

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

Ruby

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

Ruby on Rails

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

Q&A

0回答

446閲覧

'active_hash'で作成した値をdeviseで使用したい。

syu_akita

総合スコア1

Devise

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

Ruby

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

Ruby on Rails

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

0グッド

0クリップ

投稿2021/01/13 10:54

前提・実現したいこと

学校に関すアプリの作成を行っています。
user登録の際、クラスの値をactive_hashを用いて入力できるようにしたいと考えました。

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

最初、active_hashを用いてclass.rbを作成しviewsファイルにcollection_select等用いて表示させようとしたところNoMethodError が出てしましました。
調べたところusersのコントローラーを作成してその中のファイルをいじるとできる。とのことだったのでrails g devise:controllers usersを用いてusersのコントローラーを作成しました。
その後参考にしたページを真似てregistration_controllerないに記載をしたのですがエラーが起こりました

NoMethodError in Users::RegistrationsController#new undefined method `where' for Class:Class Did you mean? when Extracted source (around line #9): 7 8 9 10 11 12 # GET /resource/sign_up def new @results = Class.where('class_id IN(?)', params[:class_id]) super end

該当のソースコード

ruby

1# frozen_string_literal: true 2 3class Users::RegistrationsController < Devise::RegistrationsController 4 # before_action :configure_sign_up_params, only: [:create] 5 # before_action :configure_account_update_params, only: [:update] 6 7 # GET /resource/sign_up 8 def new 9 @results = Class.where('class_id IN(?)', params[:class_id]) 10 11 super 12 end 13 14 # POST /resource 15 # def create 16 # super 17 # end 18 19 # GET /resource/edit 20 # def edit 21 # super 22 # end 23 24 # PUT /resource 25 # def update 26 # super 27 # end 28 29 # DELETE /resource 30 # def destroy 31 # super 32 # end 33 34 # GET /resource/cancel 35 # Forces the session data which is usually expired after sign 36 # in to be expired now. This is useful if the user wants to 37 # cancel oauth signing in/up in the middle of the process, 38 # removing all OAuth session data. 39 # def cancel 40 # super 41 # end 42 43 # protected 44 45 # If you have extra params to permit, append them to the sanitizer. 46 # def configure_sign_up_params 47 # devise_parameter_sanitizer.permit(:sign_up, keys: [:attribute]) 48 # end 49 50 # If you have extra params to permit, append them to the sanitizer. 51 # def configure_account_update_params 52 # devise_parameter_sanitizer.permit(:account_update, keys: [:attribute]) 53 # end 54 55 # The path used after sign up. 56 # def after_sign_up_path_for(resource) 57 # super(resource) 58 # end 59 60 # The path used after sign up for inactive accounts. 61 # def after_inactive_sign_up_path_for(resource) 62 # super(resource) 63 # end 64end 65

試したこと

上記のことを試してとりあえずは終了しています。

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

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

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

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

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

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

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

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

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

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

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問