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

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

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

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

Q&A

解決済

1回答

3224閲覧

Rails 5 / 更新(Updade)にてStrong Parameterで例外が発生してしまいます

innjera

総合スコア132

Ruby on Rails

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

0グッド

0クリップ

投稿2016/10/26 23:46

初歩的な部分が抜けているのかもしれませんが、何故かStrong Parameter/ParameterMissingの例外が発生してしまいます。editのactionは問題なく機能しますが、updateでエラーが起きます。

controller

ruby

1class Admin::AccountsController < Admin::Base 2 before_action :signin_required 3 4 def show 5 @admin = current_admin 6 end 7 8 def edit 9 @admin = current_admin 10 end 11 12 def update 13 @admin = current_admin 14 @admin.assign_attributes(admin_params) 15 if @admin.save 16 redirect_to :admin_account, notice: "更新しました。" 17 else 18 render "edit" 19 end 20 end 21 22 private 23 def admin_params 24 params.require(:admin).permit(:email, :family_name, :given_name, :family_name_kana, :given_name_kana) 25 end 26end 27

ここは問題ないと考えていますが、念の為、Admin::AccountsControllerが継承するAdmin::Baseは以下の通りです。

ruby

1class Admin::Base < ApplicationController 2 private 3 def current_admin 4 if session[:administrator_id] 5 @current_admin||= 6 Administrator.find_by(id: session[:administrator_id]) 7 end 8 end 9 10 helper_method :current_admin 11 12 def signin_required 13 raise Forbidden unless current_admin 14 end 15end

edit actionまでは問題なく機能しますが、updateで添付エラーが出ます。
イメージ説明

以上、お分かりになる方、御指南頂けますと大変助かります。

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

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

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

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

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

guest

回答1

0

ベストアンサー

editでAdministratorクラスのオブジェクトを渡しているので、特別なことをしていなければ、params[:administrator]でAdministratorのパラメータが送られて来るので、以下のparams.require(:admin)params.require(:administrator)が正しいです。

ruby

1 private 2 def admin_params 3 params.require(:admin).permit(:email, :family_name, :given_name, :family_name_kana, :given_name_kana) 4 end

ruby

1private 2 def admin_params 3 params.require(:administrator).permit(:email, :family_name, :given_name, :family_name_kana, :given_name_kana) 4 end

投稿2016/10/27 00:02

編集2016/10/27 00:06
cameluby

総合スコア891

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

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

innjera

2016/10/27 03:02

いつも有難う御座います! classをadministrator(not "admin")にしていたことをすっかり失念していました。。 初歩的なことではありますが、理解が深まりました。引き続き宜しくお願いいたします。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問