使用 Devise 和 simple_form 进行多选

Multiselect with Devise and simple_form

我有一个 rails 应用程序,它使用 Devise 和 simple_form 来注册和验证用户。我想添加另一个 table 首选项,这样一个用户可以有多个首选项,一个首选项可以分配给多个用户。

我关注了这个:https://dev.to/neshaz/join-table-in-rails-23b5

并通过连接 table 建立了各自的关联,我可以在我的表单上查看多选复选框。但我一直停留在处理注册控制器页面中的参数部分。对于上下文,这就是我所拥有的:

registration_controller.rb

    def configure_sign_up_params
devise_parameter_sanitizer.permit(:sign_up) do |u|
  u.permit({ account_attributes: [:username], invite_request_attributes: [:text] }, :company, :email, :password, :password_confirmation, :invite_code, :agreement, :website, :confirm_password)
end

结束

_registration.html.haml:

- for preference in Preference.all
  = check_box_tag "preference[user_ids][]", preference.id
  = h preference.pref

你这样试试

class ApplicationController < ActionController::Base

  before_action :configure_permitted_parameters, if: :devise_controller?

  def configure_permitted_parameters
    devise_parameter_sanitizer.permit(:sign_up, keys: [:name, preference_ids: []])
    devise_parameter_sanitizer.permit(:account_update, keys: [:name, :website, :bio])
  end

end

_registration.html.haml:

- for preference in Preference.all
  = check_box_tag "user[preference_ids][]", preference.id
  = h preference.pref