我想更改用户通过设计登录时显示的消息。在我的用户模型中,我有一个列:名称,我想在消息中显示它,所以在我的 devise.en.yml 文件中我可以更改文本,我尝试像这样从模型中调用用户名
signed_in: 'Hello %{User.name}, Time to get cooking'
虽然正在将消息显示为这样的字符串
Hello %{User.name}, Time to get cooking
如何从模型中提取名称?这可能很简单,所以请原谅我的天真
谢谢
我想更改用户通过设计登录时显示的消息。在我的用户模型中,我有一个列:名称,我想在消息中显示它,所以在我的 devise.en.yml 文件中我可以更改文本,我尝试像这样从模型中调用用户名
signed_in: 'Hello %{User.name}, Time to get cooking'
虽然正在将消息显示为这样的字符串
Hello %{User.name}, Time to get cooking
如何从模型中提取名称?这可能很简单,所以请原谅我的天真
谢谢
好的,经过一番谷歌搜索/stackoverflow,我得到了答案
在 Controllers 中创建以下文件夹
app/controllers/my_devise
在 my_devise 中创建控制器会话(会话控制器是设计用来管理 user_sign_in 和 sign_out 进程的
您需要在新创建的会话控制器中继承设计会话控制器
class MyDevise::SessionsController < Devise::SessionsController
您可以在此处复制设计会话控制器
我像这样修改了创建动作
set_flash_message :notice, :signed_in, :name => resource.name if is_navigational_format?
注意我使用 name 而不是 User.name,似乎 devise 已经知道这是 User 模型,这是有道理的
在我的路线中,我添加了
devise_for :users,
:controllers => {
:sessions => 'my_devise/sessions'
}
在我的 devise.en.yml 文件中,我添加了
signed_in: 'Hello %{name}, Time to get cooking'
再次使用名称而不是 user.name
你真的应该打电话rails g migration AddUsernameToUser
然后运行rake db:migrate
然后设计有一个内置功能,即<%= current_user.username %>
希望有帮助!