Подтвердить что ты не робот

Ruby on Rails: использование значения по умолчанию, когда переменная равна null или пустой

У меня есть этот фрагмент кода в html erb.

Для некоторых объектов cover_image_url пуст, как мне изменить этот кодовый блок, чтобы использовать значение по умолчанию, когда это свойство имеет значение null или пусто?

<%@books.each do |book|%>
        $('#bookContainer').append('<div class="conn"><p><img class="floatright" src="<%= h book.cover_image_url%>"><h3><%= h book.title%></h3><h3><%= h book.author%></h3></p></div>');
    <% end %>
4b9b3361

Ответ 1

Вы можете определить метод cover_image_url в своей книжной модели, который вернет значение по умолчанию, если в базе данных ничего не установлено (я предполагаю, что cover_image_url - столбец в таблице книг). Что-то вроде этого:

class Book < ActiveRecord::Base
  def cover_image_url
    read_attribute(:cover_image_url).presence || "/my_default_link"
  end
end

Это вернет "/my_default_link", если атрибут не установлен, или значение атрибута, если оно установлено. См. Раздел 5.3 "The Rails 3 Way" для получения дополнительной информации об этом материале. Определение значения по умолчанию для модели на уровне модели может быть немного чище, чем делать это на уровне представления.

Ответ 2

Вы можете использовать локальную переменную внутри цикла:

<% url = book.cover_image_url or "/my_default_link" %>

Это займет ссылку по умолчанию, если первое значение равно nil.

Чтобы проверить как null, так и пусто:

<% url = ((book.cover_image_url.nil? or (book.cover_image_url and book.cover_image_url.empty?)) ? "/my_default_link" : book.cover_image_url) %>

Поместите все это в помощник, чтобы сделать его более чистым.