lundi 10 juin 2019

Rails 5: collection_check_boxes from enum (hash)

How to create collection_check_boxes from hashed enum:

class User < ApplicationRecord
  has_many :roles, dependent: :destroy
  accepts_nested_attributes_for :roles, allow_destroy: true
end

class Role < ApplicationRecord
  belongs_to :user

  enum permission: {
    read_contact: 0,
    write_contact: 1,
    read_message: 2,
    write_message: 3
  }
end

I tried in many ways:

= form_for(@user) do |f|
  = f.collection_check_boxes :permissions, Role.permissions, :last, :first
  = f.submit class: "button"

I got undefined method permissions for #<User:0x00007...>

If I try with:

= form_for(@user) do |f|
  = f.collection_check_boxes :roles, Role.permissions, :last, :first
  = f.submit class: "button"

User controller:

def update
  @user = User.new(user_params)
  if @user.save 
     ...
end

def user_params
  params.require(:user).permit(:roles)
end

I got Unpermitted parameter: :roles

Despite of looking at params:

Parameters: {"utf8"=>"✓", "authenticity_token"=>"...", "user"=>{"roles"=>["", "1", "2"]}, "commit"=>"Update", "id"=>"3"}

Also this is check to create, how to uncheck to delete?




Aucun commentaire:

Enregistrer un commentaire