JeuWeb - Crée ton jeu par navigateur
[Résolu][jQuery UI] problème autocompletion et JSON - Version imprimable

+- JeuWeb - Crée ton jeu par navigateur (https://jeuweb.org)
+-- Forum : Discussions, Aide, Ressources... (https://jeuweb.org/forumdisplay.php?fid=38)
+--- Forum : Programmation, infrastructure (https://jeuweb.org/forumdisplay.php?fid=51)
+--- Sujet : [Résolu][jQuery UI] problème autocompletion et JSON (/showthread.php?tid=5786)



[Résolu][jQuery UI] problème autocompletion et JSON - popayan - 02-11-2011

Je suis entrain de finir une partie de mon code (la suite de http://www.jeuweb.org/showthread.php?tid=8045) et j'obtiens un résultat étrange...

Voici ma partie ruby de mon appel à l'autocompletion (une action dans un controller Ajax)

def cities
if params[:term]
like = "%".concat(params[:term].concat("%"))
cities = City.where("name like ?", like).limit(10).order("LENGTH(name)")
else
cities = City.all
end
list = cities.map { |u| Hash[ id: u.id, label: u.name+" ("+u.dep.to_s+")", name: u.name]}
render json: list
end

pas très compliqué, je crée un objet json contenant un id, un label et un name

voici le script qui fait appel a cette action :

$(document).ready ->
$('#club_city').autocomplete
source: "/ajax/cities"
select: (event, ui) ->
$('#club_city').val(ui.item.name)
alert(ui.item.name)
l'autocompletion fonctionne bien mais j'ai tout de même un problème.
Logiquement, au moment de la saisie, j'ai une liste réalisée avec les "labels" de ma liste JSON qui apparait, quand je sélectionne un élément de la liste, c'est la partie "name" qui devrait apparaitre dans mon champ de formulaire or c'est la label qui apparait! J'ai ajouté le alert pour tester et lui fonctionne très bien...
Si quelqu'un a une idée???


RE: [CoffeeScript] problème autocompletion et json - Sephi-Chan - 02-11-2011

C'est plus un problème de jQuery UI.

L'objet doit contenir des attributs value et label. Je cite la documentation.

Citation :The local data can be a simple Array of Strings, or it contains Objects for each item in the array, with either a label or value property or both. The label property is displayed in the suggestion menu.


Donc en code :


list = cities.map { |c| { label: "#{c.name} (#{c.dep})", value: c.name } }

render json: list



RE: [jQuery UI] problème autocompletion et JSON - popayan - 02-11-2011

C'est impardonnable de ma part, j'avais lu "value" et mis "name" partout... même en écrivant le post je n'ai pas capté. merci beaucoup