在ajax后设置导轨会话

问题描述:

一种奇怪的问题,希望有人能帮助我。在ajax后设置导轨会话

我想在我的rails控制器中设置一个会话,我通过jquery ajax发布。

其常轨形成我通过AJAX

$.post($(this).attr('action'), $(this).serialize(), function(data){ 

}, 'json'); 

然而,会议似乎没有跨Ajax调用设置其打引线控制器

def create 
    @lead = Lead.new(params[:lead]) 
    @lead.save! 

    if @lead.save 
     session[:lead] = "#{@lead.id}" 
    end 

    end 

提交。

任何人对此有什么想法?

+0

可能相关:http://*.com/questions/5126721/rails-not-reloading-session-on-ajax-post – igorw 2011-03-25 10:11:30

您是否确实看到过在您的控制器中调用了创建(它是否出现在日志中)?

顺便说一句:你调用save()两次,但这不是问题(调用save多次,如果保存成功,每次都会返回true)。

+0

是的,它被显示在日志中,开始POST“/ leads”为127.0 .0.1在2010-12-02 21:23:24 +0000通过LeadsController处理#创建为JSON – stuartchaney 2010-12-02 22:06:25

问题可能是因为您使用您的本地主机,而不是一个合适的域我听说一些浏览器忽略这样的会话。

另一个问题可能是您没有发送用于停止伪造攻击的CSRF身份验证令牌,现在这是默认情况下对XHR请求的一种要求,而不仅仅是形式(尽管它可能没有使用该版本的rails您原始帖子的时间)。