Skip to content

Instantly share code, notes, and snippets.

@wrburgess
Forked from tylerhunt/Gemfile
Last active March 24, 2016 02:27
Show Gist options
  • Save wrburgess/920348fc5f230c053701 to your computer and use it in GitHub Desktop.
Save wrburgess/920348fc5f230c053701 to your computer and use it in GitHub Desktop.
ActiveAdmin association autocomplete without complicated plugins.
@import 'active_admin/mixins';
@import 'active_admin/base';
@import 'jquery.ui.autocomplete';
body.active_admin {
&.admin_clipbins {
.clipbin_clips {
.panel_contents {
thead {
.clip_id{
width: 75px !important;
}
}
}
}
.ui-helper-hidden-accessible {
}
.ui-autocomplete-input {
margin-left: 20%;
}
}
}
#= require active_admin/base
#= require jquery.ui.autocomplete
$ ->
$('.autocomplete').each (index, input) ->
$input = $(input)
$hiddenInput = $($(input).data('hidden-input'))
$input
.autocomplete
minLength: 3
delay: 600
source: (request, response) ->
$.ajax
url: $input.data('url')
dataType: 'json'
data:
term: request.term
success: (data) -> response(data)
select: (event, ui) ->
$input.val(ui.item.label)
$hiddenInput.val(ui.item.id)
false
.data('ui-autocomplete')._renderItem = (ul, item) ->
$('<li></li>')
.data('item.autocomplete', item)
.append('<a>' + item.label + '</a>')
.appendTo(ul)
class AutocompleteSerializer < ActiveModel::Serializer
attribute :id
attribute :label
private
def label
object.name
end
end
gem 'active_model_serializers'
gem 'activeadmin'
gem 'jquery-ui-rails'
ActiveAdmin.register Post do
form do |f|
f.inputs 'Details' do
f.input :user,
as: :string,
input_html: {
class: 'autocomplete',
id: 'post_user_name',
name: '',
value: f.object.user.try(:name),
data: {
url: autocomplete_admin_users_path,
hidden_input: '#post_user_id',
},
}
f.input :user_id, as: :hidden
end
end
end
ActiveAdmin.register User do
collection_action :autocomplete, method: :get do
users = User.where('LOWER(name) ILIKE ?', "#{params[:term]}%")
render json: users, each_serializer: AutocompleteSerializer, root: false
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment