DBに新規登録内容を保存したい
解決したいこと
DBに新規登録内容を保存したい
プログラミング初心者です。
deviseを用いて new.html.erb 内でユーザー登録を行う際
エラー等のメッセージはウェブ上にされませんが、
form画面内に記述した内容がDB(sequelpro)にデータが保存されません。
ターミナル上には
Unpermitted parameters: :profile, :occupation, :position
と表示があります。
下記の new.html.erb の表示画面にて、ユーザー登録を行います。
new.html.erb
<div class="main">
<div class="inner">
<div class="form__wrapper">
<h2 class="page-heading">ユーザー新規登録</h2>
<%# 「モデル名」にはUserモデルであれば@userを渡しましょう。%>
<%# 「新規登録機能へのパス」は、devise導入後にrails routesを実行してdevise/registrations#createへのパスを確認し、記載してください。 %>
<%= form_with model:@user, url:user_registration_path, method: :post, local: true do |f| %>
<div class="field">
<%= f.label :email, "メールアドレス" %><br />
<%= f.email_field :email, autofocus: true, autocomplete: "email" %>
</div>
<div class="field">
<%= f.label :password, "パスワード(6文字以上)" %><br />
<%= f.password_field :password, autocomplete: "new-password" %>
</div>
<div class="field">
<%= f.label :password_confirmation, "パスワード再入力" %><br />
<%= f.password_field :password_confirmation, autocomplete: "new-password" %>
</div>
<div class="field">
<%= f.label :name, "ユーザー名" %><br />
<%= f.text_field :name %>
</div>
<div class="field">
<%= f.label :profile, "プロフィール" %><br />
<%= f.text_area :profile, class: :form__text %>
</div>
<div class="field">
<%= f.label :occupation, "所属" %><br />
<%= f.text_area :occupation, class: :form__text %>
</div>
<div class="field">
<%= f.label :position, "役職" %><br />
<%= f.text_area :position, class: :form__text %>
</div>
<div class="actions">
<%= f.submit "新規登録", class: :form__btn %>
</div>
<% end %>
</div>
</div>
</div>
application_controller.rb
class ApplicationController < ActionController::Base
before_action :configure_permitted_parameters, if: :devise_controller?
private
def configure_permitted_parameters
devise_parameter_sanitizer.permit(:sign_up, keys: [:name])
end
end
自分で試したこと
ターミナル上のメッセージ
Unpermitted parameters: :profile, :occupation, :position
とあるので、:profile, :occupation, :positionを
devise_parameter_sanitizer.permit
の中に入れてあげれば良いのではないか?
devise_parameter_sanitizer.permit(:sign_up,:profile, :occupation, :position, keys: [:name])
としました。
→結果
エラー:ArgumentError in Devise::RegistrationsController#new
wrong number of arguments (given 4, expected 1)
以下参考にあるようにdevise_parameter_sanitizer.permit内にはデバイスの処理を記述するため、この書き方は間違っていると思われます。
解決にご協力頂けないでしょうか。
よろしくお願い申し上げます。
0