def delivery_address(customer)
@customer = Customer.find(customer.id)
return "No Delivery Address" if @customer.del_address1.blank?
[
@customer.del_address1,
@customer.del_address2,
@customer.del_address3,
@customer.del_address4,
@customer.del_address5
].reject(&:blank?).join(",\n")
end
Вместо того, чтобы писать 5 if
операторов, вы можете поместить все значения в массив, а затем удалить все пустые значения.
Обратите внимание, что мой код основан на вашем коде, но не совсем так, как ваш вопрос:
сожмет любые нули
Пустая строка также считается blank?
(но "" != nil
). Так что этот метод также пропустит эти значения.
Если вы хотите игнорировать только значения nil
, но оставить пустые строки, замените reject(&:blank?)
на compact
.