2014-10-04 7 views
0
<div class="img-container"> 
    <%= if @user.image_url.present? %> 
    <%= image_tag @user.image_url(:main).to_s %> 
    <%= end %> 
</div> 

Я использую рельсы 4 и несущую волну для загрузки фотографий, как указано в рельсах. Таким образом, у меня есть столбец в моем db, который называется «образ», и приведенный выше код работает без инструкции if. Когда я использую @ user.image_url (: main) .to_s, и у него есть изображение, оно правильно отображает изображение в контейнере. Я хочу загрузить стандартную фотографию, когда пользователь ее не предоставит. Он находится в моей папке с ресурсами/изображениями.Rails If - Else Statement image_url для проверки наличия

Как я могу получить инструкцию if, чтобы определить, есть ли фотография в изображении столбца или нет? Я должен использовать image_url, если показываю загруженную пользователем фотографию. Не просто изображение для отображения изображения, а .to_s - это защитная сетка. Любые мысли или ответы?

Спасибо!

Благодаря принятому ответу, я использовал предложенное решение для несущих волн для Rails 4, которое рекомендуется для 3.1 и выше. Этот пост помог мне исправить: Default URL not loading with Carrierwave in Rails

+1

Предоставляет ли [предоставление URL-адреса по умолчанию] (https://github.com/carrierwaveuploader/carrierwave#providing-a-default-url) не делать то, что вы хотите? – pdobb

+0

@pdobb это на самом деле, не знал, что он существует. довольно новичок в этом. Благодаря! – camdixon

+0

Отлично. Тогда я превратил решение в ответ. – pdobb

ответ

2

Задание default url с CarrierWave должно сделать трюк. Это позволяет отказаться, если в настоящее время изображение отсутствует.

Пример:

def default_url 
    ActionController::Base.helpers.asset_path "fallback/main/default.jpg" 
end 
+0

Итак, под изображениями я создал папку под названием« fallback », а затем разместил файл default.png. Могу ли я использовать .jpg? После этого будет работать следующий код? def default_url # # Для совместимости конвейера Rails 3.1+: ActionController :: Base.helpers.asset_path ("fallback /" + [: main, "default.jpg"]. compact.join ('_')) "/images/fallback/"+ [: main," default.jpg "]. compact.join ('_') конец – camdixon

+1

Грубо, да. Я вставлю код, который я использую для дефолтов изображений, в свой ответ. – pdobb

+0

Ну, с вашим кодом я получил ошибку и не знаю, почему. Имена объектов, переданные помощникам, не должны включать префикс «/ assets /». Вместо «/assets/fallback/main/default.jpg» используйте «fallback/main/default.jpg» - вы и я не кладем активы/перед ним. Не знаю, почему это сказано. – camdixon