0

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

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

它是否存在更短的东西来理解我的意图并且不需要重复我想要检查的内容?我正在寻找类似以下的内容:

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

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

4

2 回答 2

1

试试@user.try(:name),如果@user 为nil,这个wilk 返回nil。

于 2014-01-06T00:43:24.137 回答
0

如果您在多个地方执行此操作,我可能会采纳@zrl3dx 的建议并将其提取到帮助程序中。

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

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

于 2014-01-06T02:30:16.717 回答