6

セッション変数に保存した場所に基づいて、多数の情報ページを表示するアプリケーションがあります。

他のコントローラーからのさまざまなページ間で部分的に共有される単一の選択を使用しています。

_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() をどこに置くか、より良い方法はありますか?

参考までに、このアプリではターボリンクを使用していません。

4

1 に答える 1