0

我想更改用户通过设计登录时显示的消息。在我的用户模型中,我有一个列:名称,我想在消息中显示它,所以在我的 devise.en.yml 文件中我可以更改文本,我尝试像这样从模型中调用用户名

signed_in: 'Hello %{User.name}, Time to get cooking'

虽然正在将消息显示为这样的字符串

Hello %{User.name}, Time to get cooking

如何从模型中提取名称?这可能很简单,所以请原谅我的天真

谢谢

4

2 回答 2

3

好的,经过一番谷歌搜索/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

于 2012-11-21T20:33:05.940 回答
1

你真的应该打电话rails g migration AddUsernameToUser 然后运行rake db:migrate

然后设计有一个内置功能,即<%= current_user.username %>

希望有帮助!

于 2013-03-17T12:12:34.777 回答