Ruby on rails rails ajax post不保存会话变量
控制器在响应ajax请求时未更新会话参数。我花了一个小时在这上面,仍然不知道为什么会发生这种情况。我是否错过了关于ajax的一些非常重要的东西 Crontroller日志被命中并更改会话变量Ruby on rails rails ajax post不保存会话变量,ruby-on-rails,ajax,session,Ruby On Rails,Ajax,Session,控制器在响应ajax请求时未更新会话参数。我花了一个小时在这上面,仍然不知道为什么会发生这种情况。我是否错过了关于ajax的一些非常重要的东西 Crontroller日志被命中并更改会话变量 def update if params["commit"] == "Generate Validation Code" Rails.logger.info "session before: #{session[:last_validation]}" session[:last_validatio
def update
if params["commit"] == "Generate Validation Code"
Rails.logger.info "session before: #{session[:last_validation]}"
session[:last_validation] = Time.now.to_i
Rails.logger.info "session after: #{session[:last_validation]}"
end
end
非ajax请求-会话变量已正确更新和保存
<%= form_for @ignindex do |t| %>
<%= t.submit "Generate Validation Code", class: "btn btn-large btn-primary" %>
<% end %>
我自己也在为同样的问题挣扎(1年后)。我确信这与会话/cookie的往返以及它没有发生(或可能被覆盖)这一事实有关。如果我在
success
回调中添加重定向(window.location=/where/else
),它将更新会话[]
。但是,如果您不想重定向,这并没有特别大的帮助。解决方案是在rails:p中使用不引人注目的javascript。另外,控制器希望使用表单\u为
生成一个csrf令牌,但在ajax PUT中丢失了,我自己也在为同样的问题苦苦挣扎(1年后)。我确信这与会话/cookie的往返以及它没有发生(或可能被覆盖)这一事实有关。如果我在成功
回调中添加重定向(window.location=/where/else
),它将更新会话[]
。但是,如果您不想重定向,这并不是特别有帮助。解决方案是在rails:p中使用不引人注目的javascript。此外,控制器还需要一个csrf令牌,该令牌使用表单\u为
生成,但在ajax put中丢失
$.ajax({
url: "/ignindices/" + $("#ign").data("id"),
type: "PUT",
data: {"commit" : "Generate Validation Code" },
dataType: "json",
success: function(data) {
console.log("it submitted!");
}
});