2008-10-30 6 views
1

J'ai essayé l'exemple de Rails Cookbook et j'ai réussi à le faire fonctionner. Cependant, le text_field_with_auto_complete ne fonctionne que pour une valeur.Comment implémenter des champs de texte avec saisie semi-automatique pour les champs habtm?

class Expense < ActiveRecord::Base 
    has_and_belongs_to_many :categories 
end 

Dans la vue nouvelle des frais RHTML

<%= text_field_with_auto_complete :category, :name %> 

Auto œuvres pour la première catégorie. Comment puis-je le faire fonctionner pour plusieurs catégories? par exemple. Catégorie1, Catégorie2
comportement prévu: comme le StackOverflow Balises textbox

Mise à jour:
Avec un peu d'aide et un peu plus bricoler, je suis arrivé à plusieurs autocomplete par des virgules seperated à apparaître (affichera ici-exemple de code).
Cependant, lors de la sélection, la dernière valeur remplace le contenu de text_field_with_auto_complete. Ainsi, au lieu de Catégorie1, Catégorie2 .. la zone de texte affiche Catégorie2 lorsque la deuxième catégorie est sélectionnée via auto-complétion. Des idées pour rectifier cela?

Répondre

1

Je pense que ce blog traite de ce que vous cherchez: AJAX autocompletion with Rails.

+0

voie de Nice ... une méthode auto_complete_for_model_attribute personnalisée dans le contrôleur. Effacé cet obstacle .. merci. – Gishu

1

Si vous tentez simplement de prendre en charge plusieurs instances de saisie semi-automatique par champ, vous pouvez transmettre un délimiteur aux options de saisie semi-automatique avec le symbole: token. Cela fournit un délimiteur pour autoriser plusieurs résultats. Stackoverflow utiliserait: token => '' (il devrait y avoir un espace entre les guillemets, mais l'autoformat le supprime) pour spécifier l'espace au délimiteur entre plusieurs prises, bien que ',' soit plus communément utilisé.

+0

Pouvez-vous poster un code-échantillon? Je ne pouvais pas obtenir ceci: token /: option jetons pour travailler – Gishu

0

Ce n'est pas tout à fait votre question, mais je ne recommanderais plus d'utiliser HABTM. Vous devez créer un modèle de jointure et utiliser has_many: through. (Dans votre cas, vous créez un nouveau modèle appelé ExpenseCategoryAssignment, ou quelque chose comme ça)

Le problème est que HABTM crée des ambiguïtés que les rails n'aiment pas, et il a tendance à exposer des bogues que vous ne verriez pas autrement.

0

Vous devez utiliser PARAM "données delimiter" comme celui-ci
<%= f.autocomplete_field :brand_name, welcome_autocomplete_brand_name_path, "data-delimiter" => ', ' %>

Questions connexes