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

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

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

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

Q&A

解決済

1回答

4182閲覧

パラメーターの記述がうまくいかない(rails)

yamady

総合スコア176

Ruby on Rails

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

0グッド

0クリップ

投稿2017/07/06 09:45

編集2017/07/06 09:52

閲覧いただきまして、ありがとうございます。
Rails 5.0.0.1でWebサービスを開発しています。
そこで、Userに幾つか情報を紐付けたいと考えているのですが、どうしてかパラメーターの記述がうまく動いてくれません。

Unpermitted parameters: user_images_attributes, passport, hobby

※ user_images_attributesはUserに紐付いているCarrierWaveでアップロードしているUser画像です。
こちらで質問もさせていただきました。(本当にいつもお世話になっております涙)
※ user登録にはgem deviseを使っています。

user.rb

ruby

1class User < ApplicationRecord 2・・・ 3 private 4 5 def user_params 6 params.require(:user).permit(:name, :email, :gender, :passport, :hobby, :image, user_images_attributes: [:image]) 7 end 8end

users_controller.rb

ruby

1class UsersController < ApplicationController 2・・・ 3 def edit 4 @user.cover_image.new 5 end 6 7 private 8 9 def user_params 10 params(:user).permit(:name, :email, :gender, :passport, :hobby, :image, user_images_attributes: [:image]) 11 end 12end

registrations_controller.rb

ruby

1class RegistrationsController < Devise::RegistrationsController 2 3 protected 4 5 def update_resource(resource, params) 6 resource.update_without_password(params) 7 end 8 9 def account_update_params 10 devise_parameter_sanitizer.sanitize(:account_update) 11 end 12 13 def account_update 14 params(:user).permit(:name, :email, :background, :description, :website, :image, :user_image_id, user_images_attributes: [:cover_image]) 15 end 16end 17

name、email、gendeは更新できるのですが、なぜか、passport、hobby、user_imagesが保存されません。。

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

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

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

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

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

guest

回答1

0

ベストアンサー

参考
参考を読んでdevice4の仕組みを理解してください
device3とは記述の方法が違います.

strong_parameterは
devise_parameter_sanitizer
で管理され大抵ApplicationControllerに記述されます。

ruby

1before_action :configure_permitted_parameters, if: :devise_controller? 2 3class ApplicationController < ActionController::Base 4 protected 5 def configure_permitted_parameters 6 devise_parameter_sanitizer.permit(:name, :email, :gender, :passport, :hobby, :image, user_images_attributes: [:image]) 7 end 8end

投稿2017/07/07 00:38

moke

総合スコア2241

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

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

yamady

2017/07/07 02:44

mokeさん、ありがとうございます。 パラメーター関連もっと理解するようにいたします。。 一回、「found unpermitted parameter: id」と出たのですが、user_imagesに「user_images_attributes: [:id, image]」にしたら解決しました。感謝です。
moke

2017/07/07 03:37 編集

update時はidを許容しないといけないんですよね。 よかったです。 一応,理解して欲しいのはdevice4とdevice3 で書き方が根本的に違うことです。
yamady

2017/07/07 15:29

deviceには苦労してきたので、そろそろなんとか習得しなければです...汗
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.49%

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

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

質問する

関連した質問