Rails 3 - изображения неправильно отображаются при просмотре первой страницы - PullRequest
1 голос
/ 02 ноября 2010

В моем приложении rails3 у меня есть галерея изображений, где:

gallery has many images
image belongs to gallery

Я использую carrierwave для загрузки изображений на S3.

Моя страница галереи (действие "показать") отображает миниатюры для каждого изображения в этой галерее.

Я использую colorbox для модального отображения изображений, когда пользователь нажимает на миниатюру.

Довольно часто я вижу это после нажатия на изображение:

good_image

то, что я хочу увидеть, это:

bad_image

Я сделал ОЧЕНЬ много проблем:

  • Попробовал использовать FancyBox вместо ColorBox - та же проблема
  • Попробовал использовать другую ветку CarrierWave - та же проблема
  • Попытался поместить мои изображения в европейские корзины (я в Европе)- та же проблема
  • Пробовал загружать мои изображения вместе с галереей - та же проблема
  • Пробовал с помощью Google Hosted jQuery 1.4.1 и 1.4.3 - та же проблема
  • Загруженовсе к Heroku - та же проблема
  • Попробовал явно установить ширину моегоcolorbox (а также различные другие элементы содержимого)
  • Отредактированный ACL для S3 Bucket
  • Использование html5 doctype для images.html.haml (макет для контроллера изображений)

Это имеет тенденцию при первом нажатии на миниатюру после его загрузки , хотя я заметил, что это происходит с изображениями, на которые я не нажимал в течение часа или около того,Проблема исчезнет, ​​если я снова нажму на миниатюру сразу после сбоя .... У меня никогда не возникало проблем с миниатюрами, все они загружаются нормально.Кажется, что большая (оригинальная) версия изображения не загружается с первой попытки.

  • В моих журналах нет ошибок.
  • Это сводит меня с ума.
  • Я использую Fog gem версии 0.3.13.

Что еще я могу сделать здесь?Какие еще способы устранения неполадок можно попробовать?Любая помощь будет оценена.

Вот мой код:

class Image < ActiveRecord::Base
  belongs_to :gallery
  mount_uploader :photo, ImageUploader
  attr_accessible :photo, :gallery_id
  validates_presence_of :photo
end

class Gallery < ActiveRecord::Base
  default_scope order("id DESC")
  has_many :images
  attr_accessible :name, :images_attributes, :description
  accepts_nested_attributes_for :images, :reject_if => :all_blank, :allow_destroy => true
  validates_presence_of :name
end

#images/show.html.haml
= image_tag @image.photo_url if @image.photo_url

#galleries/show.html.haml
- for image in gallery.images
  .image
    = link_to image_tag(image.photo_url(:thumb)), image_path(image), :name=>"modal", :class=>"group" if image.photo_url(:thumb)

#layouts/images.html.haml
!!! 5
%html
  %body
    #image
      = yield

1 Ответ

1 голос
/ 02 ноября 2010

Я подозреваю, что ваша проблема связана с CSS, а не с самим приложением. Когда изображение загружается в первый раз, браузер не будет знать его ширину или высоту, поэтому оно имеет произвольный и обычно неправильный размер. Последующие запросы будут загружать изображение из кэша очень быстро, возможно, до того, как JavaScript получит возможность работать, что означает, что атрибуты width и height заполнены правильно.

Вы можете исправить это, поместив атрибуты ширины и высоты в HTML-код, отправляемый клиенту. Системы вложений, такие как Paperclip, позволяют извлекать и сохранять эту информацию, но по умолчанию этого не делают.

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