2012-11-21 22 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 %>

希望有所幫助!