Почему добавление файлового поля в мою форму приводит к тому, что «не удается проверить токен CSRF ...» - PullRequest
0 голосов
/ 27 ноября 2018

У меня (возможно) простая проблема, которую я не могу обернуть вокруг.

У меня есть простая форма для редактирования объекта tenant в моем приложении rails.Это работает, как и ожидалось.

Однако, когда я добавляю строку <%= f.file_field :logo %> в форму, я получаю ошибку Can't verify CSRF token authenticity..

Мой вопрос: Почему добавление поля file_field приводит к этой ошибке CSRF?

Форма, о которой идет речь:

....
<%= form_for(tenant,:html=>{:id=>"your_form_id",:multipart => true,:remote=>true}) do |f| %>
  <%= render 'errors/form_errors', object: @tenant %>

  <div id="login-form">
    <div class="field">
      <%= f.text_field :name, placeholder: "name" %>
    </div>
    </br>
    <div class="field">
      <%= f.email_field :email, placeholder: "email" %>
    </div>
    </br>
    <div class="field">
      <%= f.phone_field :phone, id: "phoneNumber", placeholder: "(XXX) XXX-XXXX", onkeypress:"return numberPressed(event);" %>
    </div>
    </br>

    <div class="field">
      <%= f.file_field :logo %> //WORKS FINE WITHOUT THIS FIELD!
    </div>

    <div class="actions">
      <%= f.submit id: "login-button", class: "btn-outline-primary", value: "Save",'data-disable-with':"Wait..." %>
    </div>
  </div>

<% end %>
....

дополнительно, здеськод, который вызывает форму.Не уверен, имеет ли это какое-либо отношение.

Это код в файле, который вызывает мою форму: edit.js.erb

closeLightbox();
$("body").prepend('<%= escape_javascript(render 'edit', tenant: @tenant) %>');

РЕДАКТИРОВАТЬ: Я нашел решение, хотя я нене очень понимаю, зачем это нужно.Смотрите ответ ниже.

1 Ответ

0 голосов
/ 28 ноября 2018

Я нашел это в другой ветке, и это решает мою проблему:

Я добавил в свою форму следующее:

<%= token_tag(nil) %>
...