2013-04-22 3 views
1

Я работаю над проектом, который требует вложений. В частности, мне нужно прикрепить фотографии к модели продукта.paperclip сохранение файлов, но не чтение их

Сказанное, я следовал за railscast (ссылка here), и я следил за большинством инструкций (как некоторые, я думаю, устарел). Я в конечном итоге со следующим:

В продуктах форме:

<div class="field"> 
    <%= f.label "Pic"%><br /> 
    <%= f.file_field :pic %> 
    </div> 

В продуктах модель:

class Product < ActiveRecord::Base 
    attr_accessible :brand_id, :name, :pic 

    attr_accessor :pic_file_name 
    attr_accessor :pic_content_type 
    attr_accessor :pic_file_size 
    attr_accessor :pic_updated_at 

    has_attached_file :pic 

И, чтобы увидеть результат вложения, в продуктах показать вид:

<p> 
    <b>Pic:</b> 
    <%= image_tag @product.pic.url %> 
</p> 

Теперь дело в том, что даже если журнал показывает, что изображение, выбранное с file_field был успешно загружен:

Started POST "/products" for 127.0.0.1 at 2013-04-22 17:10:56 -0500 
Processing by ProductsController#create as HTML 
    Parameters: {"utf8"=>"✓", "authenticity_token"=>"llIJTXKH87e7vpjX1A7Kmcz6BD2UToPvIfVd1bqmA58=", "product"=>{"brand_id"=>"1", "name"=>"asda\ 
sdsa", "pic"=>#<ActionDispatch::Http::UploadedFile:0x007f9cfdb201c8 @original_filename="3.JPG", @content_type="image/jpeg", @headers="Conten\ 
t-Disposition: form-data; name=\"product[pic]\"; filename=\"3.JPG\"\r\nContent-Type: image/jpeg\r\n", @tempfile=#<File:/var/folders/_r/d96rh\ 
0652xndcknb2txzn77r0000gn/T/RackMultipart20130422-2306-qoojw2>>}, "commit"=>"Create Product"} 
    ^[[1m^[[36m (0.1ms)^[[0m ^[[1mbegin transaction^[[0m 
    ^[[1m^[[35mSQL (76.1ms)^[[0m INSERT INTO "products" ("brand_id", "created_at", "image_content_type", "image_file_name", "image_file_size"\ 
, "image_updated_at", "name", "pic_content_type", "pic_file_name", "pic_file_size", "pic_updated_at", "updated_at") VALUES (?, ?, ?, ?, ?, ?\ 
, ?, ?, ?, ?, ?, ?) [["brand_id", 1], ["created_at", Mon, 22 Apr 2013 22:10:56 UTC +00:00], ["image_content_type", nil], ["image_file_name"\ 
, nil], ["image_file_size", nil], ["image_updated_at", nil], ["name", "asdasdsa"], ["pic_content_type", nil], ["pic_file_name", nil], ["pic_\ 
file_size", nil], ["pic_updated_at", nil], ["updated_at", Mon, 22 Apr 2013 22:10:56 UTC +00:00]] 
[paperclip] Saving attachments. 
    ^[[1m^[[36m (0.9ms)^[[0m ^[[1mcommit transaction^[[0m 
Redirected to http://localhost:3000/products/10 
Completed 302 Found in 126ms (ActiveRecord: 77.1ms) 

Я никогда не получить, чтобы увидеть изображение, так как он всегда говорит «Отсутствует».

Теперь, глядя в открытый/системный каталог, можно увидеть каталог модели там, а также реж дерево хранения Paperclip, а также образ, который я пытался спасти:

$ ls public/system/products/pics/000/000/010/original/ 
3.JPG 

я сделал установить путь ImageMagick, в файле

конфигурации/инициализаторы/paperclip.rb

который содержит:

Paperclip.options[:command_path] = "/Users/<my_user>/Documents/non-ios_apps/ImageMagick-6.8.1/bin/" 

Итак, я не знаю, почему изображения являются, которые загружаются, но не могут быть прочитаны. Скорее всего, это связано с тем, что он ничего не сохраняет в базе данных, поскольку касается привязок, но я не уверен, что они являются отдельными проблемами или один вызывает другой.

Любая помощь приветствуется.

Спасибо!

Использование: Rails 3.2.10 «скрепку», «~> 3,0»

ответ

1

Похоже, что файл загружается с запросом на пост, но если вы посмотрите в SQL скрипт работает, все атрибуты pic устанавливаются на nil.

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

railscast - пять лет, поэтому я предлагаю перейти к проекту paperclip на github по адресу https://github.com/thoughtbot/paperclip и прочитать, как установить и использовать текущую версию скрепки. У них очень простое пошаговое руководство по его запуску и запуску.

+0

Спасибо! Я добавил все attr_accessor из-за ошибки при настройке, что-то о массовом назначении, с которым я столкнулся в прошлом, и решил, что мне нужно добавить их, если миграция скрепки была неполной или что-то в этом роде. – snowingheart

Смежные вопросы