在我创建新Event
的表单中,我根据this railcast为Venue
创建了一个自动填写字段。但这样只有在输入场地名称时才有效。如何在输入地址时使相同的字段也起作用,在GoogleMaps上的方式如何?
模型/ 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
Javascript角/ 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
答案 0 :(得分:0)
您必须使用多个OR条件来匹配每个属性:
Venue.order(:name).where("name like ? OR address like ?", "%#{params[:term]}%", "%#{params[:address]}%")
如果您不关心区分大小写,可能还需要考虑使用ILIKE
代替LIKE
。