2017-10-19 4 views
-1

J'ai travaillé sur un projet de page Web dans lequel les gens postent et recherchent des offres. Je suis vraiment nouveau à ce sujet et j'ai fait des recherches sur la façon de faire un formulaire de recherche simple. Je travaille actuellement avec searchkick gem et j'ai suivi beaucoup de tutoriel, mais mon code ne semble pas fonctionner. Nous vous remercions à l'avanceROR recherche avec searchkick ne fonctionne pas

Voici mon code correspondant

#app/controllers/offers_controller.rb 
    class OffersController < ApplicationController 
     before_action :authenticate_user! 
     before_action :set_offer, only: [:show, :edit, :update, :destroy] 

     def index 
     search = params[:term].present? ? params[:term] : nil 
     @offers = if search 
       Offer.search(search) 
      else 
       Offer.all 
      end 
     end 


#db/migrate/create_offers.rb 
class CreateOffers < ActiveRecord::Migration[5.1] 
    def change 
     create_table :offers do |t| 
     t.string :nombre 
     t.text :descripcion 
     t.string :imagen, null:true 
     t.references :user, foreign_key: true 
     t.timestamps 
     end 
    end 
end 

#app/models/offer.rb 
class Offer < ApplicationRecord 
    searchkick word_start: [:nombre] # word_middle: [:nombre, :descripcion] 


    def search_data 
    { 
    nombre: nombre, 
    descripcion: descripcion 
    } 
    end 

#app/views/layouts/_header.html.erb 
    <div class="input-group-btn search-panel"> 
      <%= submit_tag 'Search', name: nil, class: "btn btn-default" %> 
    </div> 
+0

Quelle est votre question? – sawa

+0

Pourquoi ça ne marche pas? –

+0

Y a-t-il une erreur? Si oui, partagez-le. Avez-vous essayé d'exécuter 'Offer.search (" vos termes de recherche ")' dans une session de console IRB? Si vous voyez les résultats corrects, vous pouvez exclure cette ligne de code. Est-ce que votre terme de recherche est passé correctement dans les paramètres de params [: term]? Je l'imprimerais aux logs pour m'assurer. – BigRon

Répondre

0

Du doc ​​searchkick, essayez cette

Offer.search search, fields: [:nombre], match: :word_start