Javascript ajax调用后重新加载Rails 4页
我有一个应用程序,它根据我存储在会话变量中的位置显示大量信息页面 我在其他控制器的不同页面之间的部分共享中使用单个选择 _位置\u select.html.erbJavascript 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) %> 所有
<%= 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();