Ответ 1
Я думаю, вы хотите @style.style_image.path
вместо .url
.
Распечатайте его, чтобы быть уверенным.
Я нашел несколько сообщений здесь о File.exists? в приложении Rails, но попытки решения не помогли, я довольно новый, поэтому я должен делать что-то немое.
Я использую:
У меня есть модель "стиль", и у нее есть вложение изображения, я могу сделать изображение с помощью
<%= image_tag(@style.style_image) %>
и он отлично работает.
Короче говоря, я хочу проверить, действительно ли образ файла находится в папке, в которой он должен находиться: я не хочу использовать @style.style_image.present? для проверки изображений, потому что что просто проверяет запись db. Я хочу использовать File.exist?, чтобы увидеть, действительно ли файл для @style.style_image.
Итак, в моем файле просмотра у меня есть код
<% if File.exist?(@style.style_image.url) %>
The image exists.
<% else %>
The image is not here.
<% end %>
И всегда печатает "изображение не здесь" при загрузке страницы. Непосредственно ниже я показываю свое изображение с помощью image_tag, поэтому я знаю, что изображение есть.
Я также пробовал
<% if File.exist?(Rails.root + @style.style_image.url) %>
не повезло. Я также пытался использовать FileTest.exist?, FileTest.exists?, и File.exists? но никто не скажет мне правду, когда изображение определенно существует.
Есть ли что-то, что мне не хватает? Любое руководство будет оценено очень сильно. Я всего лишь несколько месяцев в Ruby и Rails, поэтому я, вероятно, пропустил что-то немое.
Я думаю, вы хотите @style.style_image.path
вместо .url
.
Распечатайте его, чтобы быть уверенным.
В любое время, когда вы имеете дело с веб-URL-адресами и файлами на диске, вы должны быть осторожны с тем, какой "путь" вы используете, и держите его прямо, сообщаете ли вы вашему коду, где найти файл, или браузер, как для запроса того же файла.
Веб-сервер скрывает структуру файлов ОС от пользователя/браузера по многим причинам, причем безопасность является очень высокой. Например, URL-адреса относятся к серверу, а не к корню диска.
То, с чем вы столкнулись, очень распространено, и шансы действительно хороши тем, что каждый, кто работает с программированием в Интернете, имеет или будет работать в одном и том же случае, возможно, несколько раз.