0

ユーザーがdevise経由でログインしたときに表示されるメッセージを変更したい。私のユーザーモデルには列があります:名前、メッセージ内に表示したいので、devise.en.ymlファイルでテキストを変更できます。モデルからユーザー名を呼び出してみました

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

ただし、メッセージを次のような文字列として表示しています

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

モデルから名前を取得するにはどうすればよいですか? これはおそらく非常に単純なので、私の素朴さを許してください

ありがとう

4

2 に答える 2

3

わかりましたので、少しグーグル/スタックオーバーフローを行った後、答えがあります

Controllers に以下のフォルダーを作成します。

app/controllers/my_devise

my_devise 内にコントローラー セッションを作成します (セッション コントローラーは、devise が user_sign_in および sign_out プロセスを管理するために使用するものです)

新しく作成したセッションコントローラー内でデバイスセッションコントローラーを継承する必要があります

class MyDevise::SessionsController < Devise::SessionsController

デバイスセッションコントローラーをここにコピーできます

作成アクションを次のように修正しました

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

User.name ではなく name を使用していることに注意してください

私のルート内に追加しました

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

私のdevise.en.ymlファイル内に追加しました

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

再び user.name ではなく name を使用

于 2012-11-21T20:33:05.940 に答える
1

あなたは本当に呼び出しrails g migration AddUsernameToUser て実行する必要がありますrake db:migrate

次に、deviseには組み込み関数があります。<%= current_user.username %>

それが役立つことを願っています!

于 2013-03-17T12:12:34.777 に答える