Je suis en train d’essayer d’utiliser le jeton jquery trouvé ici: http://loopj.com/jquery-tokeninput/ Suivre le guide diffusé sur les rails: http://railscasts.com/episodes/258-token-fields
Par défaut, il fallait une colonne ‘name’ sur la table / json.
Un moyen de personnaliser pour changer quelque chose d’autre (dans mon cas, ‘numéro_de_compte’)?
(dans le reailcast, il dit que si vous n’avez pas de colonne ‘nom’, vous aurez besoin de personnalisation supplémentaire)
Les lignes magiques sont
<%= f.text_field :author_tokens, "data-pre" => @book.authors.map(&:atsortingbutes).to_json %>
et
format.json { render :json => @authors.map(&:atsortingbutes) }
Ces lignes convertissent les données lues dans la table en json que jquery-tokeninput peut comprendre. Il transmet toutes les données du modèle à jquery-tokeninput, mais ce n’est pas nécessaire. Tokeninput, n’a besoin que de deux champs,
id
-> pour chaque jeton sélectionné, il est posté avec le formulaire name
-> utilisé comme étiquette du jeton Si vous ne souhaitez pas account_number
champ de name
dans votre modèle et souhaitez utiliser account_number
tant account_number
, procédez comme suit:
<%= f.text_field :author_tokens, "data-pre" => @book.authors.collect {|author| {:id => author.id, :name => author.account_number } } %>
et
format.json { render :json => @authors.collect {|author| {:id => author.id, :name => author.account_number } }
En gros, changez le json passé en tokeninput. accoun_number
comme name
.
Mettre à jour:
Changez cette ligne pour quelque chose qui vous convient le mieux:
@authors = Author.where("name like ?", "%#{params[:q]}%")
Une suggestion peut être:
@authors = Author.where("name like ?", "#{params[:q]}%")
Supprime le premier %
, mais dépend vraiment de votre type de données et de tous.
Ajoutez simplement les options “propertyToSearch”:
$(function() { $("#user_tokens").tokenInput("/users.json", { crossDomain: false, propertyToSearch: "account_number", theme: "facebook", }); });