Я новичок в рельсах. Я работаю над примером приложения для социальных сетей. Мне удалось загрузить изображение профиля пользователей вручную (скопировав изображение, загруженное в / tmp / image, в общую папку - public / images / tmp / image), и сохранил путь к базе данных как avatar_url.

В представлении профиля я использовал

<%= image_tag(@userinfo.avatar_url, :alt=>"Avatar image")%>

И получение картинки при работе на сервере rails.

Но после этого я развернул приложение в apache с пассажиром в среде разработки, установив RailsEnv development . После этого изображения не загружаются. Я попытался перейти к myip: 80 / public / images / tmp / image , и он выдает Ошибка маршрутизации .

После поиска в Интернете я обнаружил, что добавление config.serve_static_assets = true в production.rb решит проблему в производственной среде. Но для меня это бесполезно, потому что в нем также указано, что статические файлы будут использоваться в разработке по умолчанию. Чтобы еще раз подтвердить проблему, я запустил сервер rails и открыл localhost: 3000 / profile, изображение есть и не получило изображение в myip: 80 / profile.

Так что мне нужно добавить любую другую конфигурацию. Или я не должен этого делать.

4
Ashique PS 4 Мар 2015 в 13:28

2 ответа

Лучший ответ

Наконец-то я нашел решение своей проблемы. Просто поделитесь здесь.

Проблема была на самом деле из-за проблем с разрешением. Изображение будет создано в корневом временном каталоге при отправке формы. Затем я скопировал изображение из временной папки в общую папку. Следовательно, у него есть только права на чтение. После того, как я его развернул, изображение возвращает 403 запрещенную ошибку.

Я использовал,

FileUtils.chmod 775, target

Установить разрешение. После этого все заработало.

3
Ashique PS 10 Мар 2015 в 07:48

Параметр config.serve_static_assets = true указывает rails обслуживать статические ресурсы для вашего приложения, но эту работу действительно следует оставить Apache.

Ваша проблема больше связана с вашей конфигурацией Apache, чем с рельсами.

Я бы взглянул на руководство о том, как настроить Apache и Passenger, чтобы убедиться, что ваша среда настроена правильно.

Все, что находится в общей папке, должно обслуживаться веб-сервером. Однако myip: 80 / public / images / tmp / image не является допустимым путем. Вам также понадобится в конце имя файла с расширением.

1
Jason Yost 5 Мар 2015 в 03:03