Ошибка маршрутизации с Rails 3 Paperclip и S3 - PullRequest
0 голосов
/ 19 марта 2011

Я точно следовал этому учебнику и получил следующую ошибку после попытки загрузить JPG в мою локальную среду (я еще не отправил в Heroku):

ActionController :: RoutingError (Нет Маршрут матчей «/logos/medium/missing.png")

Я проверил аналогичные учебные пособия, и ни в одном из них не было указано, требуются ли маршруты для ваших удаленных образов. Как я уже сказал, я трижды проверил этот урок, и я делаю все, что от меня требуется, так какие шаги я мог бы здесь пропустить? ЕДИНСТВЕННОЕ отличие состоит в том, что я уже указал столбец «фото» в моей модели как двоичный тип данных с тем же именем, что и переменная has_attached_file ... это может быть причиной конфликта?

1 Ответ

2 голосов
/ 19 марта 2011

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

Так что, если вы последуете этому уроку, у вас все будет хорошо. ОДНАКО, если вы используете attr_accessible для защиты атрибутов вашей модели, вам нужно указать ВСЕ из них в вашей модели, чтобы эти изображения действительно сохранялись в вашем хранилище S3.

Подсказка будет, если вы увидите в своих журналах следующее:

WARNING: Can't mass-assign protected attributes: photo

Это позволяет вам знать, что у вас есть защищенные столбцы в вашей базе данных, которые должны быть доступны через attr_accessible

Вот как будет выглядеть код, если вы будете следовать учебному примеру, который я привел в своем вопросе:

class Product < ActiveRecord::Base
  attr_accessible :photo, :photo_file_name, :photo_content_type, :photo_file_size, :photo_updated_at
  belongs_to :page
  has_attached_file :photo,
    :styles =>{
      :thumb  => "100x100",
      :medium => "200x200",
      :large => "600x400"
    },
    :storage => :s3,
    :s3_credentials => "#{RAILS_ROOT}/config/s3.yml",
    :path => ":attachment/:id/:style.:extension",
    :bucket => 'yourbucket'
end
...