这个想法是:
- 在后台执行一些耗时的操作。
- 使用回调将该操作的结果传播回控制器。
- 将结果存储在内存会话存储中。
- 从那时起使用和使用会话中的结果。
控制器在回调中接收结果:
# controller callback, saves result to session
# this method is executed as expected
# session id matches the one from other controller actions
def on_counter_value_calculated(context, new_value)
@counter = new_value
session[:counter] = @counter
end
但是,存储的会话会在后续调用中丢失:
# although the same session is targeted (same id)
# the saved value is not the same
def index
@counter = session[:counter] || 0
end
我创建了一个小型 Rails 项目来演示该问题: https ://github.com/elvanja/controller_callbak_store_in_session
任何输入表示赞赏。