0

ビューでは、通常、次のような値の存在を確認します。

<%= @user.name if @user.name.present? %>

私の意図を理解し、確認したいことを繰り返す必要のない、より短いものは存在しますか? 次のようなものを探しています。

<%= @user.name if existent? %>

これが存在しない場合、このための helper_method を構築することは可能でしょうか (もしそうなら、どのように)?

4

2 に答える 2

1

@user.try(:name) を試してください。@user が nil の場合、これは nil を返します。

于 2014-01-06T00:43:24.137 に答える
0

これを複数の場所で行っている場合は、おそらく @zrl3dx の提案を取り入れてヘルパーに抽出します。

で ruby​​ ファイルを作成するだけですapp/helpersuser_helper.rb

module UserHelper
  def current_user
    @user.try(:name)
  end
end

次に、ビューで次を使用できます。

<%= current_user %>

これは、デフォルト値を与える良い方法でもあります。ユーザーが存在しないときに「ログインしていません」と言いたいとします。

module UserHelper
  def current_user
    @user.try(:name) || "Not logged in"
  end
end

もちろん、その時点でリンクを提供する方がおそらく役立つでしょう。

于 2014-01-06T02:30:16.717 に答える