问题描述
我正在使用 Hotwire 并在 Rails 6.0.3.6 应用程序上设计用户。
class User
after_create_commit { broadcast_append_to 'users' }
end
然后当一个用户被创建时,它会通过他的部分 (users/user),在那里我试图使用 current_user
设计助手。
但是 Rails 抛出这个错误:
Devise::MissingWarden in Players::Registrations#update
Devise Could not find the `Warden::Proxy` instance on your request environment.
Make sure that your application is loading Devise and Warden as expected and that the `Warden::Manager` middleware is present in your middleware stack.
如果从模型中,您尝试渲染他的默认部分 (.to_partial_path),您需要向它传递一些局部变量,例如 user: self
。
我怎么能这样对 Rails 说?
谢谢你的帮助
解决方法
DHH 说:
用于 Turbo 流的部分必须是全局的 引用,因为它们是由 ApplicationRenderer 呈现的,而不是在 特定请求的上下文。
https://discuss.hotwire.dev/t/authentication-and-devise-with-broadcasts/1752/4