Автономный 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
Конечно, возможно, было бы более полезно дать им ссылку на этот момент.