Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/77.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
Javascript ajax调用后重新加载Rails 4页_Javascript_Jquery_Ruby On Rails 4 - Fatal编程技术网

Javascript ajax调用后重新加载Rails 4页

Javascript ajax调用后重新加载Rails 4页,javascript,jquery,ruby-on-rails-4,Javascript,Jquery,Ruby On Rails 4,我有一个应用程序,它根据我存储在会话变量中的位置显示大量信息页面 我在其他控制器的不同页面之间的部分共享中使用单个选择 _位置\u select.html.erb <%= select_tag(:location, options_for_select(Location.all.order('name ASC').collect { |l| [l.name, l.id] }, [session[:location]||'']), include_blank: true) %> 所有

我有一个应用程序,它根据我存储在会话变量中的位置显示大量信息页面

我在其他控制器的不同页面之间的部分共享中使用单个选择

_位置\u select.html.erb

<%= select_tag(:location, options_for_select(Location.all.order('name ASC').collect { |l| [l.name, l.id] }, [session[:location]||'']), include_blank: true) %>
所有这些代码都非常有效,但我需要在ajax调用完成后重新加载页面,让控制器返回更新的html太复杂了,因为位置选择将出现在如此多的页面上

我尝试过在ajax调用中添加success:、error:回调函数,还尝试过使用ajaxStop。我可以让ajax调用正常工作,也可以让页面重新加载正常工作,但我无法找到同时实现这两种功能的方法

我尝试补充:

$(document).ajaxStop(function(){
    window.location.reload();
});
我应该把location.reload()放在哪里,还是有更好的方法


仅供参考,我在此应用程序中未使用TurboLink。

locations\u controller.rb

class LocationsController < ApplicationController
  def select
    session[:location] = params[:value]
    render js: ''
  end
end
class LocationsController < ApplicationController
  def select
    session[:location] = params[:value]
    respond_to do |format|
        format.js   {}
    end
  end
end

这么简单,这么明显,我几乎不好意思承认,我没有先尝试。而且至少在rails 4中,我认为不需要respond_to block-如果select.js是views/locations文件夹中唯一的select.*view文件,它会自动被拾取有时很难通过树看到森林。简单而美丽。
class LocationsController < ApplicationController
  def select
    session[:location] = params[:value]
    respond_to do |format|
        format.js   {}
    end
  end
end
window.location.reload();