Если запись базы данных пуста, покажите это «сообщение» - PullRequest
3 голосов
/ 07 января 2012

Я новичок в rails и мне было интересно, можно ли было иметь сообщение по умолчанию в представлении, если запись в базе данных была пустой.Например, если у вас есть изображение, вы можете сделать это:

<%= image_tag "#{post.imge}", :alt => 'Currently no image available'%>

Так что, если там не будет ссылки на изображение, появится «В настоящее время изображение недоступно». Но скажите, если вы просто хотелипокажите строку так:

<%= post.info %>

Но если post.info были пустыми, я хочу отобразить альтернативное сообщение типа "В настоящее время информация недоступна"?Я знаю, что <% = post.info,: alt => 'В настоящее время нет доступной информации'%> не работает, но я не могу найти какой-либо способ сделать это - возможно, потому что это так просто, что никто никогда не имелзадал вопрос lol!

Я пытаюсь использовать приведенное ниже решение в качестве помощника, поскольку хочу использовать несколько разных записей, но не могу заставить его работать - я добавил свой код ниже:

module ApplicationHelper
  def chk_blnk(gogo)
    if gogo.blank?
      "No img"
    else    
      return gogo
    end
  end
end

Я также не уверен, как вызвать его в представлении, когда оно принимает переменную (post.info). Я знаю, что обычно вы бы назвали его так:

<%= chk_blnk %>

Извините, если это действительно базовые вопросы, я пытался искать ответы, но опять же, похоже, я не могу их найти.

Ответы [ 2 ]

8 голосов
/ 07 января 2012

Вы можете сделать это:

<%= post.info.blank?? 'No post' : post.info %>

или, если вы знаете, что post.info будет nil (а не пустой строкой), когда в нем ничего нет:

<%= post.info || 'No Post' %>

или, если вам нужно добавить разметку:

<% if post.info.blank? %>
    <p>No Post</p>
<% else %>
    <%= post.info %>
<% end %>

Кстати, поведение этого:

<%= image_tag "#{post.imge}", :alt => 'Currently no image available' %>

когда изображение отсутствует для отображения, зависит от браузера: некоторые отобразят значок разбитого изображения, некоторые отобразят текст alt, другие ничего не отобразят. Вы злоупотребляете атрибутом alt :

Предпочтительным средством для разметки текстовой альтернативы для элемента img является использование атрибута alt для предоставления полного эквивалента для изображения или для атрибута alt с пустым значением (для указания что изображение чисто презентационное).

Предполагается, что текст alt представляет собой описание изображения, подходящее для программ чтения с экрана и других неграфических интерфейсов, поэтому используется . В настоящее время изображение недоступно , так как значение alt не имеет большого значения чувство.

2 голосов
/ 07 января 2012

Так как мю слишком короткий, ответ в основном тот же, я удалю свой и дам вам еще одну возможность.

Если это всегда о пустых строках или объектах, которые nil, то вы можете добавитьor метод для Ruby's String и NilClass:

class String
  def or(default)
    self.empty? ? default : self
  end
end

class NilClass
  def or(default)
    default
  end
end

С этим вы можете сделать:

<%= post.info.or('Currently no information available') %>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...