Я подумал, что должен превратить это в полноценный ответ.
Нет, ручное создание <form></form>
в Rails не будет автоматически вставлять токен аутентификации.Токен вставляется только при использовании помощника по формам Rails .Эти помощники позволяют вам указать поля формы без указания токена подлинности;это автоматически поместит поле токена в форму.Например:
<%= form_for @person do |f| %>
<%= f.label :first_name %>:
<%= f.text_field :first_name %><br />
<%= f.label :last_name %>:
<%= f.text_field :last_name %><br />
<%= f.submit %>
<% end %>
Создает следующий HTML-код со скрытым полем authenticity_token
:
<form action="/people" class="new_person" id="new_person" method="post">
<input name="authenticity_token" type="hidden" value="NrOp5bsjoLRuK8IW5+dQEYjKGUJDe7TQoZVvq95Wteg=" />
<label for="person_first_name">First name</label>:
<input id="person_first_name" name="person[first_name]" type="text" /><br />
<label for="person_last_name">Last name</label>:
<input id="person_last_name" name="person[last_name]" type="text" /><br />
<input name="commit" type="submit" value="Create Person" />
</form>
Но если вы генерируете HTML-код вручную, например, используя HAML :
%html
%head
%body
%form
Сгенерированный HTML выглядит так:
<html>
<head></head>
<body>
<form></form>
</body>
</html>
... без какого-либо поля authenticity_token
.
В артикула вы связались с ним, он говорит "Типичная форма сгенерирована в Rails ...", что означает сгенерированный с помощью помощника по форме Rails.Формы, созданные вручную, не «генерируются» в том смысле, в каком они используются в этом контексте.