在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
提交。
任何人对此有什么想法?
答
您是否确实看到过在您的控制器中调用了创建(它是否出现在日志中)?
顺便说一句:你调用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您原始帖子的时间)。
可能相关:http://*.com/questions/5126721/rails-not-reloading-session-on-ajax-post – igorw 2011-03-25 10:11:30