我正在努力建立一个人们可以投票的网站。在注册部分,人们可以选择他们的城市和州,但我真正想做的是根据他们的状态过滤城市,使用来自SQLite数据库的信息。以下是我在程序中调用选择列表的方法:
<%= f.label "Ciudad:" %>
<%= f.select :ciudade_id, grouped_options_for_select(Departamento.order(:nombre).map{ |group| [group.nombre, group.ciudades.map{ |ciudade| [ciudade.nombre, ciudade.id] } ] }), { prompt: true}, {:onchange => 'populate(this.id, 'puesto_id')'}, required: true, class: ' order_form ciudades_search'%>
这就是项目的展望:
州选择。
城市选择:
有什么建议吗?
答案 0 :(得分:1)
如果您想通过AJAX访问Rails数据库中的州/城市信息,那么您需要创建一个提供该信息的路由和控制器。
然而,SQLite并没有真正削减它 - 它不是为大型生产数据库构建的,并且没有像ILIKE
那样的搜索功能。我会推荐Postgres。
resources :states, only: [:show, :index]
class State < ActiveRecord::Base
has_many :cities
end
class City < ActiveRecord::Base
belongs_to :state
end
class StatesController < ApplicationController
# GET /states(.json)
def index
@states = State.all
@states = State.where("name ILIKE ?", params[:search]) if params[:search]
render json: @states
end
# GET /states/:id(.json)
def show
@state = State.includes(:cities).find(params[:id])
render json: @state, include: :cities
end
end
然后,您可以将其与Select2之类的内容结合使用,或者使用自己的解决方案。
但是如果你要创建一个全局应用程序,你可能想要使用像http://www.geonames.org/这样的服务,因为保持最新的全局数据库会很疯狂。