Скрепка дает неправильный URL. Как исправить? - PullRequest
2 голосов
/ 19 декабря 2011

Мой путь скрепки в модели:

has_attached_file :image, :path => ":rails_root/app/assets/images/article_images/:id/:style_:basename.:extension"

Но когда я звоню article.image.url, вот URL, который я получаю (который не работает):

/system/images/64294/original/fantastik.jpg?1324288670

Ответы [ 3 ]

6 голосов
/ 19 декабря 2011

Вам также необходимо настроить URL, который вы хотите:

has_attached_file :image,
                   :path => ":rails_root/app/assets/images/article_images/:id/:style_:basename.:extension"
                   :url => "/app/assets/images/article_images/:id/:style_:basename.:extension"

Единственное, что я хотел бы спросить, если вы храните их в хорошем месте. Как правило, они пошли бы в

/public/...

Или на другом сервисе, таком как s3. Однако именно так вы модифицируете URL

Надеюсь, это поможет!

0 голосов
/ 21 октября 2015

Вот как исправить проблему с помощью: default_url:

:default_url => ActionController::Base.helpers.asset_path('empty-event-cover.png')
0 голосов
/ 19 декабря 2011

как @andrewpthorp упоминает, что это потому, что вы переключаете только путь, но вы можете сделать это более DRY

по умолчанию для скрепки:

:url                   => "/system/:attachment/:id/:style/:filename",
:path                  => ":rails_root/public:url",

Вы можете видеть, что URL может быть частью пути, поэтомуВаша конфигурация должна выглядеть следующим образом:

 has_attached_file :image,
   :url => "/app/assets/images/article_images/:id/:style_:basename.:extension",
   :path => ":rails_root:url"

Будьте осторожны, обычные серверы (apache, nginx) обслуживают файлы только из общедоступного каталога.

Дополнительные параметры для has_attached_file вы можете найти здесь

...