独立的helper_method检查存在,例如@ user.name如果存在?

时间:2014-01-06 00:39:32

标签: ruby-on-rails ruby ruby-on-rails-4 helpermethods

在视图中,我通常会检查是否存在这样的值:

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

是否存在更短的内容,了解我的意图而不需要重复我要检查的内容?我正在寻找以下内容:

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

如果这不存在,是否可以为此构建一个helper_method(如果是,如何)?

2 个答案:

答案 0 :(得分:1)

尝试@ user.try(:name),如果@user为nil,则此wilk返回nil。

答案 1 :(得分:0)

如果您在多个地方这样做,我可能会采取@ zrl3dx的建议并将其提取到帮助器中。

只需在app/helpers中创建一个ruby文件,例如user_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

当然,在那时给他们一个链接可能会更有帮助。