0

Rails 3.2.1でdeviseとcancanを使用していますが、リファクタリングして単純化できることがわかっている異常な問題が発生していますが、多くの検索を行った後、行き詰まりました。

ユーザー モデルに first_name フィールドと last_name フィールドがあり、次のコードを使用して users/show.html.erb ビューにユーザーのフル ネームを正常に表示しました。

<%= @user.first_name + " " + @user.last_name %>

そして、次を使用して、ヘッダーにユーザーの表示ページへのリンクを正常に表示していました。

<% if user_signed_in? %>
  <li><%= link_to @user.first_name + " " + @user.last_name, current_user %></li>
<% end %>

しかし、アプリの別の部分で作業した後、ヘッダーが未定義のメソッドエラーメッセージを表示し始めました...

いずれにせよ、ユーザー名を定義して操作するためのより良い方法があることは知っており、ユーザー モデルに name メソッドを追加するなど、いくつか試してみましたが、この投稿から明確にわかるように、私は初心者で、その仕事をすることができませんでした。

このようなアプリケーションでユーザー名を最適に操作する方法について何かアイデアがあれば教えてください。

4

1 に答える 1

3

どこで定義してい@userますか? それがあなたの UsersController show アクションにあることは間違いありません。つまり、そのアクションのヘッダーに対してのみ定義されています。

ヘッダー コードを次のように置き換えてみてください。

<% if user_signed_in? %>
  <li><%= link_to current_user.first_name + " " + current_user.last_name, current_user %></li>
<% end %>

秘訣は、ユーザーがサインインしているときに Devise が常に利用できるようにすることです。インスタンス変数current_userの設定について心配する必要はありません。@user

于 2012-04-12T14:20:43.300 に答える