完成特定操作后我有这个 ajax 调用
$.ajax({
type: "POST",
url: $("#myform").prop('action'),
data: $("#myform").serialize(),
xhrFields: {withCredentials: true},
beforeSend: function(xhr) {
xhr.setRequestHeader('X-CSRF-Token', $('meta[name="csrf-token"]').last().attr('content'));
}
});
这个 ajax 调用指的是创建操作,所以我想将表单的参数保存在我之前创建的会话中。所以我把它放在创建动作中
def create
session[:my_session].deep_merge!(params[:user])
puts session[:my_session]
我打印会话以从服务器确保它包含正确的参数,是的,它已经打印了正确的值。
{"profile_id"=>"1000", "first_name"=>"john", "last_name"=>"vieira", "email"=> "john@sandsora.com"}
这里的问题是在那个调用之后,会话没有保存我存储的数据!这意味着它存储了这个分配之前的最新数据。我搜索了那个错误,我发现它可能是 CSRF 令牌错误,我通过添加beforeSend
函数修复了它,但我仍然有同样的问题,所以请给点建议?