Balise de contrôle de formulaire Selectize.js utile avec saisie semi-automatique, création et modification d'éléments par ajax.
Ajoutez cette ligne au Gemfile de votre application :
gem 'selectize-ajax'Et puis exécutez :
$ bundle
Ou installez-le vous-même en tant que :
$ gem install selectize-ajax
Dans votre application.js, incluez les éléments suivants :
//= require selectize-ajax
Dans votre application.css, incluez les éléments suivants :
*= require selectize-ajax
Par exemple, vous souhaitez créer un contrôle déroulant pour choisir la catégorie de publication
selectize_ajax_tag f . object , :category_id , collection : Category . collectionCe code génère une liste déroulante de sélection simple. La collection doit être la suivante :
[
...
{ value : < id > , label : < title > } ,
...
] def self . collection
Category . map do | category |
{ label : category . title , value : category . id }
end
endPour utiliser la saisie semi-automatique ajax, vous devez ajouter un chemin de recherche :
selectize_ajax_tag f . object , :category_id , collection_path : categories_autocomplete_path Par défaut, le paramètre de recherche est q , si vous souhaitez utiliser un autre paramètre, vous devez définir search_param pour le contrôle.
Vous pouvez ajouter un nouvel élément à partir de la fenêtre modale. Pour cela il vous faut :
<%= selectize_ajax_tag f . object , :category_id ,
collection : Category . collection ,
add_path : new_category_path ,
add_modal : '#new-category-modal'
%>Fenêtre modale Bootstrap
...
.modal-header
% h4 .modal-title
Create new category
.modal-body
= simple_form_for(@category_form, url: categories_path ,
data: { target: '#new-category-modal' }, remote: true) do |f|
...L'action du contrôleur après la création réussie d'un nouvel enregistrement doit renvoyer json :
def create
...
render json : { label : record . title , value : record . id }
endAprès cela, le modal se fermera et le nouvel enregistrement sera sélectionné dans la liste déroulante.
Pour modifier l'élément sélectionné, vous devez ajouter un nouveau chemin d'action modal et modifier.
<%= selectize_ajax_tag f . object , :category_id ,
collection : Category . collection ,
add_path : new_category_path ,
add_modal : '#new-category-modal' ,
edit_path : edit_category_path ( @category ) ,
edit_modal : '#edit-category-modal'
%> AVERTISSEMENT : si vous souhaitez utiliser edit_path et que vous n'avez pas d'identifiant d'enregistrement pour générer le chemin du lien, vous devez utiliser les modèles suivants :
{{id}} - edit_category_path(id: '{{id}}')edit_category_path(id: f.object.category_id || '{{id}}')'/category/{{id}}/edit' (non recommandé) Le script remplacera automatiquement le paramètre {{id}} par la valeur sélectionnée.
| Paramètre | Valeurs | Défaut |
|---|---|---|
label | chaîne | De l'objet |
value | mixte | De l'objet |
placeholder | chaîne | -- |
wrap_class | chaîne | FAUX | -- |
wrap_class_only | vrai | FAUX | FAUX |
label_class | chaîne | -- |
input_html[class] | chaîne | -- |
required | vrai | FAUX | De l'objet |
collection | tableau | [] |
add_modal | chaîne | -- |
add_path | chaîne | -- |
add_button_text | chaîne | I18n.t('selectize_ajax.add_button_text') |
add_button_class | chaîne | -- |
edit_path | chaîne | -- |
edit_modal | chaîne | -- |
edit_button_text | chaîne | I18n.t('selectize_ajax.edit_button_text') |
edit_button_class | chaîne | -- |
horizontal | vrai | FAUX | vrai |
collection_path | chaîne | -- |
search_param | chaîne | q |
Les rapports de bogues et les demandes d'extraction sont les bienvenus sur GitHub à l'adresse https://github.com/distroid/selectize-ajax.
La gemme est disponible en open source selon les termes de la licence MIT.