Add searchable select step by step
then require js in // active_admin.js
//= require active_admin/searchable_select
$(document).ready(function(){
$('.account_select_notify').change(function(){
debugger
if (this.value == 'all_account') {
$('.notify_select_account').attr('disabled', true);
}
else if (this.value != 'all_account') {
$('.notify_select_account').attr('disabled', false);
}
})
})
------------------------------------------------------
Then import Css in // active_admin.css.scss
@import "active_admin/searchable_select";
--------------------------------------------
2. Add input field in active admin
form do |f|
f.inputs do
f.input :title
# f.input :user_id, as: :select, collection: User.all.map { |c| [c.first_name, c.id] }, include_blank: false, :input_html => { :width => 'auto' }
f.input :user_id, as: :searchable_select, multiple: true, collection: ([["All", "all_account"]] + User.all.map{|acc| ["#{acc.email}", acc.id, class: "notify_select_account"]}), input_html: {required: true, class: "account_select_notify"}
end
f.actions # adds the 'Submit' and 'Cancel' buttons
end
controller do
def create
users = params["notification"]["user_id"].reject { |c| c.empty?}
if users.include?("all_account")
users = User.all.map(&:id)
end
users.each do |user_id|
Notification.create(user_id: user_id, title: params["notification"]["title"])
end
redirect_to admin_notifications_path, :alert => "Successfully Pushed Notification"
end
end