【问题标题】:Setting a rails session in an ajax post在 ajax 帖子中设置 Rails 会话
【发布时间】:2011-05-19 09:06:20
【问题描述】:

有点奇怪的问题,希望有人能帮帮我。

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

它是我通过 ajax 提交的常规 Rails 表单

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

 }, 'json');

哪个击中了潜在客户控制器

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

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

  end

但是似乎没有在 ajax 调用中设置会话。

有人对此有想法吗?

【问题讨论】:

标签: jquery ruby-on-rails session


【解决方案1】:

您是否真的看到在您的控制器中调用了 create(它是否出现在日志中)?

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

【讨论】:

  • 是的,它显示在日志中,在 2010-12-02 21:23:24 +0000 由 LeadsController#create as JSON 开始为 127.0.0.1 发布 POST "/leads"跨度>
【解决方案2】:

问题可能是因为您使用的是本地主机而不是正确的域,我听说有些浏览器会忽略此类会话。

另一个问题可能是您没有发送用于阻止伪造攻击的 CSRF 身份验证令牌,现在这是默认情况下 XHR 请求的要求,而不仅仅是表单(尽管当时可能没有使用 rails 版本你原来的帖子)。

【讨论】:

    猜你喜欢
    • 2011-07-04
    • 2016-05-01
    • 1970-01-01
    • 2011-10-20
    • 2011-08-17
    • 1970-01-01
    • 2017-03-03
    • 2013-09-21
    • 2012-01-31
    相关资源
    最近更新 更多