Автономный helper_method проверяет наличие, например, @user.name, если существует?

В представлении я обычно проверяю наличие такого значения:

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

Существует ли что-то более короткое, что понимает мое намерение и не требует повторения того, что я хочу проверить? Я ищу что-то вроде следующего:

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

Если этого не существует, можно ли построить helper_method для этого (и если да, то как)?

2 ответа

Решение

Попробуйте @user.try(:name), этот wilk вернет ноль, если @user ноль.

Если вы делаете это более чем в одном месте, я, вероятно, возьму предложение @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

Конечно, возможно, было бы более полезно дать им ссылку на этот момент.

Другие вопросы по тегам