我在我的 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]])
其他参数都通过了,不知道是不是和数据类型数组有关?
试试这个
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
我最后解决这个问题的方法是创建两个新表:
和相应的模型。我无法让它与阵列一起工作。