2012-11-21 23 views
0

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

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

虽然是正显示出消息像这样

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

如何从模型中拉出名的字符串?这可能是非常简单的,所以请原谅我的幼稚

感谢

回答

2

好了,所以谷歌上搜索/计算器的一点点后,我找到了答案

创建控制器以下文件夹

app/controllers/my_devise 

在my_devise中创建控制器会话(Sessions控制器是设计用来管理user_sign_in和sign_out过程的工具

您需要将新创建的会话控制器中继承色器件会话控制器

class MyDevise::SessionsController < Devise::SessionsController 

您可以复制这里的色器件会话控制器

我修改,像这样

set_flash_message :notice, :signed_in, :name => resource.name if is_navigational_format? 

通知我创建操作使用名称而不是用户名,它似乎好像设计已经知道这是用户模型,这是有道理的

在我的ro茨,我增加

devise_for :users, 
      :controllers => { 
      :sessions => 'my_devise/sessions' 
      } 

在我的devise.en.yml文件我再次使用名称不user.name

1

添加

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

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

然后devise有一个内置的功能,它是,<%= current_user.username %>

希望有所帮助!