设计注册控制器中不允许的参数错误

问题描述 投票:0回答:2

我在我的 Users 表中添加了一个

characteristics
列,该列由 Devise 处理。我需要它是数据类型数组,我管理如下:

t.text "characteristics", array: true

我可以在控制台中更新特性,但是当我尝试通过浏览器中的表单更新它们时,出现以下错误:

 Unpermitted parameter: :characteristics. Context: { controller: Users::RegistrationsController, action: update, request: #<ActionDispatch::Request:0x00000001310268b8>, params: {"_method"=>"put", "authenticity_token"=>"[FILTERED]", "user"=>{"first_name"=>"Carlos", "last_name"=>"Test", "email"=>"[email protected]", "date_of_birth(1i)"=>"2001", "date_of_birth(2i)"=>"1", "date_of_birth(3i)"=>"12", "pronouns"=>"he/him", "city_id"=>"1", "summary"=>"I am the sweetest Cuban on this planet.", "characteristics"=>["", "Vegan"], "offers_couch"=>"1", "offers_co_work"=>"1", "offers_hang_out"=>"1", "question_one"=>"Laughing with Lissi", "question_two"=>"When Lissi wants me to clean", "question_three"=>"I like privacy", "question_four"=>"A good night out", "password"=>"[FILTERED]", "password_confirmation"=>"[FILTERED]", "current_password"=>"[FILTERED]"}, "couch"=>{"capacity"=>""}, "couch_facility"=>{"facility_ids"=>[""]}, "commit"=>"Update", "controller"=>"users/registrations", "action"=>"update"} }

我的用户编辑表单如下所示:

<%= f.input :characteristics, collection: ['Vegan', 'Sunset Drinks', 'Clean Freak', 'No Drinks for Me', 'Party Lover', 'Non-Smoker', 'No Pets', 'Alone Time', 'Sports', 'Exhibitions', 'Political Activism'], as: :check_boxes, input_html: {:multiple => true} %>

其余表格完美无缺,只有特征让我感到恐惧。

我允许参数与

application_controller.rb

中的所有其他字段一样

devise_parameter_sanitizer.permit(:account_update, keys: [:photo, :first_name, :last_name, :date_of_birth, :pronouns, :city_id, :summary, :offers_couch, :offers_co_work, :offers_hang_out, :question_one, :question_two, :question_three, :question_four, :characteristics, couch_attributes: [:capacity], couch_facility_attributes: [:facility_ids]])

其他参数都通过了,不知道是不是和数据类型数组有关?

ruby-on-rails parameters devise simple-form ruby-on-rails-7
2个回答
0
投票

试试这个

    class ApplicationController < ActionController::Base
             
   before_action :configure_permitted_parameters, if: :devise_controller

并确保您的应用程序控制器中也有“configure_permitted_parameters”方法

protected
  def configure_permitted_parameters
   # User Update parameters.
 devise_parameter_sanitizer.permit(:account_update, keys:    [:photo, :first_name, :last_name, :date_of_birth, :pronouns,  :city_id, :summary, :offers_couch, :offers_co_work, :offers_hang_out, :question_one, :question_two, :question_three, :question_four, :characteristics, couch_attributes: [:capacity], couch_facility_attributes: [:facility_ids]])
    end

0
投票

我最后解决这个问题的方法是创建两个新表:

  • 特点
  • 用户特征

和相应的模型。我无法让它与阵列一起工作。

© www.soinside.com 2019 - 2024. All rights reserved.