He seguido este video de GoRails para que Devise funcione con hotwire-rails . No sé por qué mis mensajes de error de inicio de sesión no funcionan de la misma manera que en el video. Los mensajes de error funcionan muy bien en el formulario de registro, pero en el formulario de inicio de sesión aparece este error:
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)Como sugiere Chris en el video, he editado mi inicializador Devise para que se vea así .
Mi paquete.json tiene @hotwired/turbo-rails": "^7.0.0-beta.5 , pero en el código fuente de Chris para el episodio es beta.3 , por lo que ese no parece ser el problema.
¿Que me estoy perdiendo aqui?
Estaba teniendo el mismo problema y resulta que no hay un disparador para navegar. Agregar: turbo_stream a esta línea en initializers/devise.rb lo resolvió para mí:
Devise.setup do |config| [...] config.navigational_formats = ['*/*', :html, :turbo_stream] [...] endConseguí que esto funcionara unificando todos mis errores/avisos de flash en uno parcial en lugar de tener un aviso de flash parcial y un bloque separado para errores de formulario:
Puse esto en mis layouts/application.rb :
<%= render "shared/notices" %>Ese parcial se ve así:
<% 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 %> Entonces, mi form_for en views/devise/sessions/new.html.erb se ve así: <%= form_for(resource, as: resource_name, url: session_path(resource_name)) do |f| %>
Mi solución es que no use app/javascript/packs/your_application.js en el diseño de la página de inicio de sesión.
En su lugar, puede escribir un js nuevo como app/javascript/packs/blank.js , en este blank.js , no agregue import "@hotwired/turbo-rails" .
Y use blank.js en el nuevo archivo de diseño app/views/layouts/blank.html.erb sign_in la página de inicio de sesión de Devise, como estos:
<head> <%= javascript_pack_tag 'blank' %> <%= stylesheet_pack_tag 'blank' %> </head>