2016-05-18 9 views
0

in meinem Formular zum Erstellen einer neuen Event, machte ich ein Auto-Vervollständigen-Feld für Venue basierend auf this railcast. Aber so funktioniert es nur, wenn Sie einen Namen für einen Veranstaltungsort eingeben. Wie funktioniert das gleiche Feld auch bei der Eingabe einer Adresse, wie es auf GoogleMaps ist?Auto-Vervollständigung basierend auf mehreren Attributen des Modells

models/event.rb

def find_venue 
    venue.try(:name) 
    end 

    def find_venue=(name) 
    self.venue = Venue.find_or_create_by_name(name) if name.present? 
    end 

application.js

//= require jquery-ui 

javascripts/events.js.coffee:

jQuery -> 
    $('#event_find_venue').autocomplete 
    source: $('#event_find_venue').data('autocomplete-source') 

new.html.erb:

<%= f.text_field :find_venue, data: {autocomplete_source: Venue.order(:name).map(&:name)} %> 

venues_controller.rb

def index 
    @venues = Venue.order(:name).where("name like ?", "%#{params[:term]}%") 
    render json: @venues.map(&:name) 
    end 

Antwort

0

Sie werden mehrere OR-Bedingungen verwenden, um jedes Attribut entsprechen:

Venue.order(:name).where("name like ? OR address like ?", "%#{params[:term]}%", "%#{params[:address]}%") 

Sie können auch mit ILIKE statt LIKE zu prüfen, ob Sie nicht besorgt sind mit Groß- und Kleinschreibung.

+0

funktioniert nicht. Sind Sie sicher, dass das alles geändert werden muss? Ist auch "% # {params [: address]}%" 'in diesem Fall notwendig? es scheint wie 'render json: @ locations.map (&: adresse)' müsste auch in der controller sein. – sivanes

Verwandte Themen