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

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

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

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

Ruby on Rails

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

Q&A

1回答

4247閲覧

deviseのサインイン画面のフォームでUnpermitted parameter: :emailと出る

koma0521

総合スコア1

Devise

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

Ruby on Rails

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

0グッド

0クリップ

投稿2020/08/07 01:34

前提・実現したいこと

gemのdeviseでnameとemailとpasswordを使ってサインアップ機能を作っています。
サインアップ機能でnameとemailとpasswordを使ってサインアップするためにapp/views/users/registrations/new.html.erbにnameを記入するフォームを作ったのですが思ってるような機能になりません。

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

Unpermitted parameter: :email

該当のソースコード

html

1<%= form_for(resource, as: resource_name, url: registration_path(resource_name)) do |f| %> 2 <%= render "users/shared/error_messages", resource: resource %> 3 4 <div class="field"> 5 <%= f.label :name %><br /> 6 <%= f.text_field :name, autofocus: true, autocomplete: "name" %> 7 </div> 8 9 <div class="field"> 10 <%= f.label :email %><br /> 11 <%= f.email_field :email, autofocus: true, autocomplete: "email" %> 12 </div> 13 14 <div class="field"> 15 <%= f.label :password %> 16 <% if @minimum_password_length %> 17 <em>(<%= @minimum_password_length %> characters minimum)</em> 18 <% end %><br /> 19 <%= f.password_field :password, autocomplete: "new-password" %> 20 </div> 21 22 <div class="field"> 23 <%= f.label :password_confirmation %><br /> 24 <%= f.password_field :password_confirmation, autocomplete: "new-password" %> 25 </div> 26 27 <div class="actions"> 28 <%= f.submit "Sign up" %> 29 </div> 30<% end %> 31

このフォームに記入するとwebアプリ上でEmail can't be blankとエラーが出ます。

コマンドラインでのパラメータはこのようになっています。

Parameters: {"utf8"=>"✓", "authenticity_token"=>"Or6h7W3NQy3ZxBmbTIuAsByPRrfwDaGv+vW2LxoC2M236FUjNJreuygiJ8mKQBfCaCmVQ+l99foDqxAuK1e1Aw==", "user"=>{"name"=>"こま", "email"=>"example@railstutorial.org", "password"=>"[FILTERED]", "password_confirmation"=>"[FILTERED]"}, "commit"=>"Sign up"}

webアプリで検証をしたフォームはこのようになっています。

<input autofocus="autofocus" autocomplete="name" type="text" name="user[name]" id="user_name"> <input autofocus="autofocus" autocomplete="email" type="email" value="" name="user[email]" id="user_email">

フォーム入力したコマンドラインはこの通りです。

Processing by Users::RegistrationsController#create as HTML Parameters: {"utf8"=>"✓", "authenticity_token"=>"BxrW6LLYyy2J9VrGnoaMC3K+1gryb98mFKsvE35b2HGKTCIm649Wu3gTZJRYTRt5BhgF/usfi3Pt9YkSTw61vw==", "user"=>{"name"=>"koma", "email"=>"example@railstutorial.org", "password"=>"[FILTERED]", "password_confirmation"=>"[FILTERED]"}, "commit"=>"Sign up"} Unpermitted parameter: :email (0.1ms) begin transaction ↳ /home/vagrant/.rbenv/versions/2.5.7/lib/ruby/gems/2.5.0/gems/activerecord-5.2.4.3/lib/active_record/log_subscriber.rb:98 (0.1ms) rollback transaction ↳ /home/vagrant/.rbenv/versions/2.5.7/lib/ruby/gems/2.5.0/gems/activerecord-5.2.4.3/lib/active_record/log_subscriber.rb:98 Rendering users/registrations/new.html.erb within layouts/application Rendered users/shared/_error_messages.html.erb (1.7ms) Rendered users/shared/_links.html.erb (1.0ms) Rendered users/registrations/new.html.erb within layouts/application (20.2ms) Completed 200 OK in 406ms (Views: 87.9ms | ActiveRecord: 0.1ms)

試したこと

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

railsを勉強して1週間ほどです。

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

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

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

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

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

maisumakun

2020/08/07 01:41

コントローラーはどのように書いていますか?
guest

回答1

0

Unpermitted parameter: :email
「パラメータが許可されていないよ」とのことなので
RegistrationsControllerの中身を見せていただいてもよろしいでしょうか?

投稿2020/08/10 08:26

nasuk47

総合スコア311

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問