Как генерировать AuthenticityToken на рельсах
Я создаю тег формы самостоятельно, когда я отправляю форму на сервер, он дает мне ошибку InvalidAuthenticityToken, поэтому я хочу знать, как добавить ее в мою собственную в текущей ситуации
ActionController::InvalidAuthenticityToken in CropsController#update
ActionController::InvalidAuthenticityToken
Rails.root: /home/mlzboy/my/crop2
Application Trace | Framework Trace | Full Trace
Ответы
Ответ 1
Существует помощник вида form_authenticity_token
, который возвращает токен аутентификации текущего сеанса.
В вашем view.html.erb:
<form action="/blah" method="POST">
<input name="authenticity_token" value="<%= form_authenticity_token %>" type="hidden">
<input name="first_name" type="text">
</form>
Ответ 2
Этот ответ сначала для тегов токенов rails в Google, чтобы упростить для будущих поколений Google: просто используйте token_tag
, это помощник, определенный в ActionView::Helpers::UrlHelper
, который возвращает скрытый ввод с form_authenticity_token
в качестве значения по умолчанию.
Ответ 3
Это то, что я сделал, и это сработало:
<form action="/users/sign_in" method="post" accept-charset="UTF-8" class="login-form new_user" id="new_user">
<input name="utf8" type="hidden" value="✓" />
<input name="authenticity_token" value="<%= form_authenticity_token %>" type="hidden">
<label for="user_email">
<span>Email:</span>
<input autofocus="autofocus" type="email" name="user[email]" id="user_email" required />
</label>
<label for="user_remember_me">
<span>Password:</span>
<input autocomplete="off" type="password" name="user[password]" id="user_password" required />
</label>
<a href="#" class="forgot-password-link">Forgot your password?</a>
<button type="submit" class="btn btn-primary submit">Log In</button>
</form>