Рубин если еще синтаксис - PullRequest
0 голосов
/ 27 марта 2012

У меня есть приложение, в котором пользователи могут зарегистрироваться через Facebook, в этом случае я беру изображение Facebook или они могут зарегистрироваться с помощью обычной аутентификации, и в этом случае они загружают фотографию с использованием драгоценного камня CarrierWave.

Из-за какого-то конфликта мне пришлось создать столбец в базе данных (:image), чтобы сохранить URL-адрес изображения Facebook, а затем другой столбец (:dimage), чтобы сохранить URL-адрес изображения. если они зарегистрировались, используя не-Facebook зарегистрироваться.

Поэтому, когда приходит время отображать пользователя, я проверяю, есть ли: image, а если нет, то отображает другой :dimage.

Однако я не хочу требовать от них загрузки изображения, и в этом случае я хочу отобразить анонное изображение (здесь оно обозначено rails.png). Однако Rails.png не отображается (просто неправильный путь к изображению), поэтому я предполагаю, что есть какая-то ошибка с моим синтаксисом if else, потому что image_tag("rails.png") взят прямо из API

 <% if user.image %>
 <%= image_tag user.image %>
 <% elsif user.dimage %>
 <%= image_tag user.dimage_url(:thumb).to_s %>
 <% else %>
 <%= image_tag("rails.png") %>
 <% end %>

Сгенерированный html на rails.png

<img alt="Assets" src="/assets/">

Ответы [ 3 ]

4 голосов
/ 27 марта 2012

Используйте метод present?, чтобы проверить, не является ли атрибут пустым:

<% if user.image.present? %>
  <%= image_tag user.image %>
<% elsif user.dimage.present? %>
  <%= image_tag user.dimage_url(:thumb).to_s %>
<% else %>
  <%= image_tag("rails.png") %>
<% end %>

Вы избавите себя от головной боли или двух, потому что в Ruby единственными ложными значениями являются false и nil,Это означает, что пустая строка "" действительно вернет true.

0 голосов
/ 27 марта 2012

Когда вы создаете новое приложение rails, rails сохраняет его логотип в папке PROJECT_PATH / app / assets / images.Не могли бы вы проверить, существует ли это изображение?

0 голосов
/ 27 марта 2012

Вам нужно взглянуть на user.image.nil? user.image.empty? и user.image.blank? в зависимости от того, что вы используете, и примените то же самое к остальной части вашего условного. Вам нужно выяснить, что именно вы ищете, или, если что-то еще, не даст вам того, что вы хотите. Сначала я бы попробовал empty, который проверяет, является ли что-то нулем или пустой строкой.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...