在Rails中自动完成的城市文本字段

时间:2016-04-08 20:21:46

标签: ruby-on-rails ruby autocomplete

我已经搜索了一些关于在州之后添加第二个字段的方法,以基于它来设置城市。我首先看到了两个选项:observe_field(来自原型)和jQuery,都有一个选择框。事实上,我不知道JavaScript,并且急着设置这个......好吧,我认为自动完成的文本字段会更好,也许最容易做到。

我们走了:我有一个模型Uf和City,两者都填充了数据。城市有“belongs_to Uf”。问题是:我怎样才能设置这样的东西?有没有办法只用ruby和rails来做到这一点?

1 个答案:

答案 0 :(得分:2)

要做到这一点,你需要有一个AJAX动作来响应每次用户输入文本时发送的一些搜索字符串查询。此操作将使用包含搜索结果集的数据来响应视图。

这是一个非常简单的例子:

城市管制员:

def search
    term  = params[:term]
    cities = City.where('name LIKE ? OR code LIKE ?', "%#{term}%", "%#{term}%").order(:name)
    render json: cities.map { |city|
      {
        id:    city.id,
        label: city.inspect,
        value: city.full_name
      }
    }
end

收到回复后,下拉列表将填入搜索结果。选择一个值会设置该字段,并在提交表单时在隐藏字段中存储城市的匹配id

我会考虑探索jQuery自动完成Gem。如果您正在使用Rails,那么这里有一个完整堆栈版本https://github.com/bigtunacan/rails-jquery-autocomplete,这应该是很好的学习。