Ajax PUT请求导致在Rails应用程序中注销。为什么?

时间:2012-03-13 14:23:21

标签: ajax ruby-on-rails-3 session csrf logout

my Rails app中的2个地方有ajax调用。 (一个用于jQueryUI拖放排序,另一个用于更新评论帖子)。

每当发生这些调用时,用户都会被注销。没有明显的理由。 我正在使用omniauth-facebook和omniauth-google-oauth2进行身份验证。

如何解决这个问题?

这是ajax调用的样子(coffeescript):

  $.ajax({
    type: 'put',
    data: {post_id: post.attr("id")},
    dataType: 'json',
    complete: -> post.children('.headpost').children('.buttons').removeClass('new_reply'),
    url: '/posts/update/'})

谢谢!

1 个答案:

答案 0 :(得分:3)

我最终做了什么:

在application.html.erb布局标题中,在<%= csrf_meta_tags %>下:

<%= javascript_tag "var AUTH_TOKEN = '#{form_authenticity_token}';" if protect_against_forgery?%>

在assets / whatever.js.coffee中

$.ajax ({
            type: 'put',
            data: {authenticity_token: AUTH_TOKEN},
            dataType: 'json',
            complete: -> post.children('.headpost').children('.buttons').removeClass('new_reply'),
            url: '/posts/'+post.attr("id").slice(5) });