Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/52.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Rails在使用remote=true执行ajax时不保留会话数据_Ruby On Rails_Ajax_Session - Fatal编程技术网

Ruby on rails Rails在使用remote=true执行ajax时不保留会话数据

Ruby on rails Rails在使用remote=true执行ajax时不保留会话数据,ruby-on-rails,ajax,session,Ruby On Rails,Ajax,Session,我正在使用rails应用程序,并尝试使用rails remote执行ajax请求:true。该请求应该触发我的一个控制器操作 在应用程序控制器中,在执行操作之前执行一个before\u filter回调。它检查会话用户id,如下所示: if会话[:user\u id] 此检查无法强制重定向。当我选中会话[:user\u id]时,它是nil,这意味着会话cookie没有通过。我有一堆对控制器执行ajax的js,有趣的是,它们都可以工作,通过检查。所以有两个问题: 我需要一些额外的代码才能使re

我正在使用rails应用程序,并尝试使用rails remote执行ajax请求:true。该请求应该触发我的一个控制器操作

在应用程序控制器中,在执行操作之前执行一个
before\u filter
回调。它检查会话用户id,如下所示:

if会话[:user\u id]

此检查无法强制重定向。当我选中会话[:user\u id]时,它是nil,这意味着会话cookie没有通过。我有一堆对控制器执行ajax的js,有趣的是,它们都可以工作,通过检查。所以有两个问题:

我需要一些额外的代码才能使remote:true正常工作吗?有没有办法设置会话cookie或smth

这是验证未经授权的ajax请求的正确方法还是有更好的方法

我使用的是Rails 4


谢谢

我正在使用Desive,因此我不确定这是否直接适用,但是,您还必须在表单标签中传递
真实性\u令牌

<%= form_tag my_action_path(@version), {remote: true}, authenticity_token: true do %>

它可能是不同的,但相似。不过我想这对你来说很有用

另一件需要注意的事情是查看一个有效的表单,并查看在控制台中将哪些数据发布到服务器,因为rails会回显传递到服务器的数据,您可以使用它来帮助我们进行调试。在所有有效的会话请求中(您登录时执行的任何操作),它应该具有
会话\u id
真实性\u令牌
或类似的内容