【发布时间】:2014-03-28 08:30:01
【问题描述】:
我有 2 个字段,例如州和城市。城市将加载相对于相应的状态。而且我的字段不是纯粹的 DropDown。它们就像一个带有自动完成功能的输入字段,允许我们选择多个选项(参考图片..)
这就是我加载状态的方式。
<%= jl.select :state_id, State.all.map{|j| [j[:name], j[:id]]}, {}, {class: 'select2', multiple: true, 'data-placeholder' => 'Type State to Search'} %>
为了加载城市,我编写了 jquery,它发送了一个 ajax 请求,然后将响应附加到它的成功函数中。
而我的控制器就像
def update_city_select
@states = State.where(name: params[:name]).order(:id) unless params[:name].blank?
@cities = City.where(state_id: @states.first.id).order(:name) unless @states.first.id.blank?
respond_to do |format|
format.html { render layout: false }
format.js
format.xml
end
end
而我的 update_city_select.html.erb 就像
<%= select_tag 'city_id', options_from_collection_for_select(@cities, "id", "name", @states), {}, {class: 'select2', multiple: true, 'data-placeholder' => 'Type City to Search'} %>
问题是我的终端总是出错..
(wrong number of arguments (4 for 1..3)):
1: <%= select_tag 'city_id', options_from_collection_for_select(@cities, "id", "name", @states), {}, {class: 'select2', multiple: true, 'data-placeholder' => 'Type State to Search'} %>
如果我删除 {} 表单 update_city_html 页面,它会正常工作。但我得到的只是一个简单的下拉列表,在我的第一张图片中没有像阿拉巴马加利福尼亚这样的输入字段。 有什么办法可以解决这个问题。
【问题讨论】:
标签: ruby-on-rails ruby ajax ruby-on-rails-4