如何在使用Hotwire Rails时显示设计登录表单错误



我遵循这个GoRails视频来让设计与hot - wire-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)

正如Chris在视频中建议的那样,我已经编辑了我的设计初始化器,如下所示:

我的包。json中有@hotwired/turbo-rails": "^7.0.0-beta.5,但在Chris的这一集的源代码中是beta.3,所以这似乎不是问题。

我在这里错过了什么?

我有同样的问题,结果是没有触发导航。将:turbo_stream附加到initializers/design中的这一行。Rb帮我解决了:

Devise.setup do |config|
[...]
config.navigational_formats = ['*/*', :html, :turbo_stream]
[...]
end

我把所有的flash错误/通知统一到一个部分,而不是有一个flash通知部分和一个单独的表单错误块:

我把这个放在我的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 %>

然后,我的views/devise/sessions/new.html.erb中的form_for看起来像这样:<%= form_for(resource, as: resource_name, url: session_path(resource_name)) do |f| %>

我的解决方案是在sign_in页面的布局中不使用app/javascript/packs/your_application.js

相反,你可以写一个像app/javascript/packs/blank.js这样的新js,在这个blank.js中,不要添加import "@hotwired/turbo-rails"

并在设计sign_in页面的新布局文件app/views/layouts/blank.html.erb中使用blank.js,如:

<head>
<%= javascript_pack_tag 'blank' %>
<%= stylesheet_pack_tag 'blank' %>
</head>

相关内容

  • 没有找到相关文章

最新更新