2011-05-15 169 views
2

我有一个控制器操作,预计将由jquery调用。这里的电话:如何将设计认证细节传递给轨道控制器操作?

$.ajax({ 
     url: "/comments.json", 
     type: "POST", 
     dataType: "json", 
     data: { 
      commentable_id: $("#addCommentForm").attr("data-site-update-id"), 
      commentable_type: 'SiteUpdate', 
      content: $("#addCommentForm textarea#content").val() 
     }, 
     success: function(comment) { 

     } 
    }); 

它工作得很好,但由于某种原因,“current_user”是控制器内的零。如果我强制authenticate_user!作为过滤器,rails会返回一个HTTP Unauthorized。

如何传递验证细节,以便该控制器操作可以与设计一起使用?更好的是,有什么办法可以让这个透明?我不想一遍又一遍地通过每个Ajax请求的验证细节...

在Java中,一旦用户登录...他们已登录。您没有通过任何URL到网址了 - 它在某个地方的会话中,而且都是透明的。有没有办法我可以用轨道做到这一点?我不想把重点放在这些细节上。

感谢

编辑:解决的办法就是添加以下到您的JavaScript的地方:

$(document).ajaxSend(function(e, xhr, options) { 
    var token = $("meta[name='csrf-token']").attr("content"); 
    xhr.setRequestHeader("X-CSRF-Token", token); 
}); 

回答

2

设计确实保持会话。

This可能是你的问题。

+0

这完全似乎是问题......但不幸的是,这些解决方案都没有工作。可以使用jQuery的铁轨是问题吗?我完全失败了:(看来很多事情在rails中很容易,但是如果遇到问题,实际上可能很奇怪,很难弄清楚发生了什么,至少我们知道问题是什么 - 会话正在丢失,就像发生在其他人身上一样 – egervari 2011-05-15 08:06:30

+0

ahh,我不得不向xhr请求添加令牌 – egervari 2011-05-15 08:15:22

+0

嘿,你能准确告诉我你是如何解决这个问题的吗?我有类似的问题。 – rookieRailer 2011-09-08 04:28:16

相关问题