在AJAX请求上设计记录用户.Rails 3.1

Xav*_*nis 10 ruby-on-rails csrf devise ruby-on-rails-3.1

我有一个使用AJAX for CRUD的控制器,但每当我点击我的一个远程链接(例如删除)时,我看到rails服务器已经决定将我注销并重定向我.检查服务器日志表明它无法验证CSRF真实性.如何在我的请求中包含CSRF令牌?

运行: - Rails 3.1 - 设计1.4.4 - jquery-rails 1.0.13

相关的控制器行动:

 def destroy
     @article = Article.find(params[:id])
      if @article.destroy
        flash[:notice] = "Article deleted."
        respond_to do |format|
        format.html{redirect_to articles_path}
        format.js{}
      end
      else
        flash[:error] = "Try Again."
        redirect_to :back
      end
Run Code Online (Sandbox Code Playgroud)

布局/ application.html.erb

      <head>
    <title><%= content_for?(:title) ? yield(:title) : "Untitled" %></title>
<link rel="stylesheet" href="http://twitter.github.com/bootstrap/assets/css/bootstrap-1.1.1.min.css>
    <%= stylesheet_link_tag "application" %>
    <%= javascript_include_tag :defaults %>
   <script type="text/javascript">jQuery.ajaxSetup({ beforeSend: function (xhr) { xhr.setRequestHeader("Accept", "text/javascript"); } });</script>
    <%= csrf_meta_tag %>
    <%= yield(:head) %>
  </head>
Run Code Online (Sandbox Code Playgroud)

提前致谢.

Pla*_*tsy 8

Rails 3.1使用gem'jquery-rails',它希望你在application.js文件中有这个:

//= require jquery
//= require jquery_ujs
Run Code Online (Sandbox Code Playgroud)

我忘记了jquery_ujs并且遇到了和你一样的问题.