如何定义实例模型在 Rails 6 中的呈现方式

问题描述

我正在使用 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.

也许解决方案是能够告诉 Rails 以下内容

如果从模型中,您尝试渲染他的认部分 (.to_partial_path),您需要向它传递一些局部变量,例如 user: self

我怎么能这样对 Rails 说?

谢谢你的帮助

解决方法

DHH 说:

用于 Turbo 流的部分必须是全局的 引用,因为它们是由 ApplicationRenderer 呈现的,而不是在 特定请求的上下文。

https://discuss.hotwire.dev/t/authentication-and-devise-with-broadcasts/1752/4

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...