Comment obtenir de Jquery UI Autocomplete avec Rails 4?
Je suis à l'aide de Rails 4.0.2 avec jquery-rails (3.1.0) et jquery-ui-rails (4.1.1) gemmes. Je suis en train d'ajouter La saisie semi-automatique dans le formulaire de recherche (à l'aide de Bootstrap 3.1.0):
<%= form_tag products_path, method: :get, class: 'navbar-form navbar-left' do %>
<div class='form-group'>
<%= text_field_tag :query, params[:query], id: "navbar-search-input", class: 'form-control', placeholder: 'Product name.....' %>
</div>
<%= button_tag(type: 'submit', id: 'navbar-search-btn', class: 'btn btn-default') do %>
<i class='fa fa-search fa-fw'></i> Search
<% end %>
<% end %>
Voici ma demande les fichiers CSS et JS:
application.js
//= require jquery
//= require jquery_ujs
//= require jquery.ui.autocomplete
//= require turbolinks
//= require_tree .
var ready;
ready = (function() {
$('a[href="' + this.location.pathname + '"]').parent().addClass('active');
$("#navbar-search-input").autocomplete({
source: '/products/autocomplete.json',
});
});
$(document).ready(ready);
$(document).on('page:load', ready);
application.css.scss
*= require bootstrap
*= font-kit-rails/ubuntu
*= require jquery.ui.autocomplete
*= require_self
*= require_tree .
Que mon contrôleur et de la route pour l'auto-complétion:
class ProductsController < ApplicationController
def autocomplete
@products = Product.order(:name)
respond_to do |format|
format.html
format.json {
render json: @products.where("name ILIKE ?", "%#{params[:q]}%")
}
end
end
routes.rb
resources :products do
collection do
get 'autocomplete'
end
end
Maintenant avec tout cela, mon fichier json avec tous mes produits à /products/autocomplete.json
sont là. Le problème est que si je tape quelque chose, il me donne un vide déroulante et si je clique sur n'importe quelle zone de la liste déroulante, il permet de réinitialiser le champ du formulaire de recherche. Savez-vous comment obtenir que cela fonctionne?
MODIFIER
REMARQUE: j'ai un Produit nommé Riz
Started GET "/products/autocomplete.json?term=ric" for 127.0.0.1 at 2014-03-19 10:06:51 -0400
Processing by ProductsController#autocomplete as JSON
Parameters: {"term"=>"ric"}
Product Load (0.9ms) SELECT "products".* FROM "products" WHERE (name ILIKE '%%') ORDER BY "products"."name" ASC
Completed 200 OK in 16ms (Views: 14.3ms | ActiveRecord: 0.9ms | Search: 0.0ms)
Il n'y a pas d'erreurs, mais ma demande n'est pas de retourner quoi que ce soit. Jetez un oeil à mon montage.
OriginalL'auteur user2784630 | 2014-03-19
Vous devez vous connecter pour publier un commentaire.
ma compréhension limitée - lorsque vous tapez quelque chose dans le champ de saisie semi-automatique, il est transmis au contrôleur comme params[:terme] qui est ensuite utilisé pour la recherche de produits et de retour que les données à la fonction de rappel pour le traitement.
OriginalL'auteur user2784630
À en juger par votre remarque, il semble que vous n'êtes pas à chercher les param correctement dans votre contrôleur, alors essayez:
render json: @products.where("name ILIKE ?", "%#{params[:term]}%")
OriginalL'auteur tirdadc