Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/58.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 回应do格式问题_Ruby On Rails_Ruby_Ajax_Ruby On Rails 4 - Fatal编程技术网

Ruby on rails 回应do格式问题

Ruby on rails 回应do格式问题,ruby-on-rails,ruby,ajax,ruby-on-rails-4,Ruby On Rails,Ruby,Ajax,Ruby On Rails 4,我有两个领域,像州和城市。城市将根据相应的州进行加载。我的字段不是纯粹的下拉列表。它们就像一个带有自动完成功能的输入字段,允许我们选择多个选项参考图像 这就是我加载状态的方式 <%= jl.select :state_id, State.all.map{|j| [j[:name], j[:id]]}, {}, {class: 'select2', multiple: true, 'data-placeholder' => 'Type State to Search'} %>

我有两个领域,像州和城市。城市将根据相应的州进行加载。我的字段不是纯粹的下拉列表。它们就像一个带有自动完成功能的输入字段,允许我们选择多个选项参考图像

这就是我加载状态的方式

<%= jl.select :state_id,  State.all.map{|j| [j[:name], j[:id]]}, {}, {class: 'select2', multiple: true, 'data-placeholder' => 'Type State to Search'} %>
我的更新_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'} %>
如果我删除{}表单更新城市html页面,它就可以正常工作了。但我得到的只是一个简单的下拉列表,没有输入字段,就像我第一张图片中的阿拉巴马加州一样。
有什么办法可以解决这个问题。

我认为您的问题在于如何呈现表单,而不是Rails中的respond\u块。我看到您正在使用:

我认为您的select_标记没有被正确调用。这与您是否从respond_调用了正确的内容类型无关

这可能看起来很明显,但事实是您正在独立于表单调用select_标记,因此这将是问题的原因

选项\u来自\u集合\u用于\u选择

诚然,我对select2没有任何经验,但我一直在寻找,我认为您的问题可能与您的以及您的{}有关:

曲面级别修复将使用带有新选择标记的form_builder对象,而不是裸选择标记:

select_标记只接受3个参数。看看它的颜色。 所以,就这样吧

`select_tag 'city_id', options_from_collection_for_select(@cities, "id", "name", @states), {class: 'select2', multiple: true, 'data-placeholder' => 'Type City to Search'}`
请确保为ajax请求设置正确的格式,这应该是jsonp


欲了解更多信息,请查看

事实上我不明白。你能说得更具体一点吗?对不起,我无意中点击了提交,我仍在努力寻找答案!ActionView::Template::Error表单中的第一个参数不能包含nil或为空:1:2:“键入要搜索的状态”}%>3:在控制台中获取此错误:抱歉-我的意思是我将其用作表单中使用的实例变量的占位符。你需要用你在@form\u中使用的实例变量替换@instance\u var\u for\u form,或者在你的ajax操作中再次设置该变量。我真的很喜欢有人投票否决某个答案,但没有说明他为什么这么做。你没有完整地阅读我的问题。。我不能忽略{},在删除dat{}时,它看起来就像一个下拉表。该输入字段将丢失。请再次查看select_标记语法。它接受3个参数,而不是4个参数。因此,我无法实现这一点:
<%= select_tag 'city_id', options_from_collection_for_select(@cities, "id", "name", @states), {}, {class: 'select2', multiple: true, 'data-placeholder' => 'Type State to Search'} %>
select_tag(name, option_tags = nil, options = {})

select(object, method, choices, options = {}, html_options = {})
#update_city_select.html.erb 
<%= form_for @instace_var_for_form do |jl| %>
    <%= jl.select :city,  options_from_collection_for_select(@cities, "id", "name", @states), {}, {class: 'select2', multiple: true, 'data-placeholder' => 'Type State to Search'} %>
<% end %>

#ajax
$(document).on("ajax:success", "select", function(data) {
    //pull select form form
    $("element").append(select);
});
`select_tag 'city_id', options_from_collection_for_select(@cities, "id", "name", @states), {class: 'select2', multiple: true, 'data-placeholder' => 'Type City to Search'}`
$("#your_states_input_id").select2({
  placeholder: "Search for a city",
  ajax: { 
    url: "your_city_url_here",
    dataType: 'jsonp'
  }
});