我遵循这个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>