Подтвердить что ты не робот

Извлечь регистрацию пользователя на запрос AJAX. Рельсы 3.1

У меня есть контроллер, который использует AJAX для CRUD, однако всякий раз, когда я нажимаю на одну из моих удаленных ссылок (например, Delete), я вижу, что сервер rails решил вывести меня и перенаправить. Проверка журналов сервера означает, что он не может проверить подлинность CSRF. Как включить токен CSRF в мой запрос?

Продолжительность: - Рельсы 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

Макеты/application.html.erb

      <head>
    <title><%= content_for?(:title) ? yield(:title) : "Untitled" %></title>
<link rel="stylesheet" href="#" onclick="location.href='http://twitter.github.com/bootstrap/assets/css/bootstrap-1.1.1.min.css>
    <%= stylesheet_link_tag '; return false;"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>

Спасибо заранее.

4b9b3361

Ответ 1

Rails 3.1 использует gem 'jquery-rails', который хочет, чтобы вы получили это в файле application.js:

//= require jquery
//= require jquery_ujs

Я забыл jquery_ujs и получал ту же проблему, что и вы.

Ответ 2

У вас должно быть это на странице html:

<%= csrf_meta_tag %>

который генерирует следующее:

<meta name="csrf-param" content="authenticity_token"/>
<meta name="csrf-token" content="the token comes here"/>

Всякий раз, когда вы выполняете POST (DELETE, PUT на самом деле POST, но с настройкой _method зависят), вы должны включить {authenticity_token: "the token comes here"} в данные, которые вы публикуете вместе.