セッション変数に保存した場所に基づいて、多数の情報ページを表示するアプリケーションがあります。
他のコントローラーからのさまざまなページ間で部分的に共有される単一の選択を使用しています。
_location_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 呼び出しが行われます。
location_controller.rb
class LocationsController < ApplicationController
def select
session[:location] = params[:value]
render js: ''
end
end
これが私のコフェスクリプトです:
home.js.コーヒー
$ ->
$('#location').change ->
$.get '/location/select', {value: $('option:selected', this).val()}
このコードはすべてうまく機能しますが、ajax 呼び出しが完了した後にページをリロードする必要があります。場所の選択が非常に多数のページに表示されるため、コントローラーが更新された html を返すのは複雑すぎます。
success: および error: コールバック関数を ajax 呼び出しに追加しようとしましたが、ajaxStop も試しました。ajax 呼び出しを機能させるか、ページのリロードを機能させることができますが、両方を取得する方法がわかりません。
私は追加しようとしました:
$(document).ajaxStop(function(){
window.location.reload();
});
location.reload() をどこに置くか、より良い方法はありますか?
参考までに、このアプリではターボリンクを使用していません。