Utilisation de jquery TokenInput sans ‘nom’ par défaut

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,

  1. id -> pour chaque jeton sélectionné, il est posté avec le formulaire
  2. 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", }); });