Как отображать ошибки формы входа в систему Devise при использовании Hotwire Rails
Я следил за этим видео GoRails, чтобы заставить Devise работать с hotwire-rails. Я не понимаю, почему мои сообщения об ошибках входа не работают так же, как в видео. Сообщения об ошибках отлично работают в форме регистрации, но в форме входа я получаю эту ошибку:
Processing by Devise::SessionsController#create as TURBO_STREAM
Parameters: {"authenticity_token"=>"[FILTERED]", "user"=>{"email"=>"elvis@example.com", "password"=>"[FILTERED]", "remember_me"=>"0"}, "commit"=>"Log in"}
Completed 401 Unauthorized in 2ms (ActiveRecord: 0.0ms | Allocations: 406)
Как Крис говорит в видео , которое я отредактировал мое Завещание инициализатором , чтобы выглядеть это .
В моем package.json есть
@hotwired/turbo-rails": "^7.0.0-beta.5
, но в исходном коде Криса для эпизода
beta.3
так что, похоже, проблема не в этом.
Что мне здесь не хватает?
3 ответа
Я получил эту работу, объединив все мои ошибки / уведомления о вспышках в одну часть, вместо того, чтобы иметь частичную часть уведомления о вспышке и отдельный блок для ошибок формы:
Я положил это в свой
layouts/application.rb
:
<%= render "shared/notices" %>
Этот фрагмент выглядит так:
<% flash.each do |msg_type, message| %>
<div class="alert">
<div class="container">
<button class="close" data-dismiss="alert"><span>×</span></button>
<%= message %>
</div>
</div>
<% end %>
Тогда мой
form_for
в
views/devise/sessions/new.html.erb
выглядит так:<%= form_for(resource, as: resource_name, url: session_path(resource_name)) do |f| %>
У меня была та же проблема, и оказалось, что нет триггера для навигации. Добавление:turbo_stream к этой строке в инициализаторах / devise.rb решило это для меня:
Devise.setup do |config|
[...]
config.navigational_formats = ['*/*', :html, :turbo_stream]
[...]
end
Мое решение заключается в том, что вы не используете
app/javascript/packs/your_application.js
в макете страницы sign_in.
Вместо этого вы можете написать новый js, например
app/javascript/packs/blank.js
, в этом , не добавляйте
import "@hotwired/turbo-rails"
.
И используйте
blank.js
в новом файле макета
app/views/layouts/blank.html.erb
для разработки
sign_in
страница, например:
<head>
<%= javascript_pack_tag 'blank' %>
<%= stylesheet_pack_tag 'blank' %>
</head>