Reputation: 5879
I followed this tutorial to set up Paperclip with s3 on heroku. And it works fine! But now i moved to a new project, and i tried to replicate the steps i made with the first to make image uploads working. But i'm not able to, and this is driving me crazy! Please help me with this problem... i've lost hours and hours. :-/
This is what is happening:
I create an activity choosing a photo, and i think the upload doesn't even start (it's too fast!). No error is called, and the "photo" attribute of my activity is /photos/original/missing.png
Here's my model file:
class Activity < ActiveRecord::Base
has_many :infos, :dependent => :destroy
has_many :links, :dependent => :destroy
has_many :events, :dependent => :destroy
accepts_nested_attributes_for :infos
has_attached_file :photo,
:styles =>{
:thumb => "80x60#",
:medium => "160x120#",
:large => "320x240#",
:home => "320x370#"
},
:storage => :s3,
:s3_credentials => "#{RAILS_ROOT}/config/s3.yml",
:path => ":attachment/activities/:id/:style.:extension",
:bucket => 'andrea'
end
my Gemfile:
source 'http://rubygems.org'
gem 'rails', '3.0.5'
gem "paperclip", "~> 2.3"
gem 'aws-s3'
# Bundle edge Rails instead:
# gem 'rails', :git => 'git://github.com/rails/rails.git'
gem 'sqlite3'
# Use unicorn as the web server
# gem 'unicorn'
# Deploy with Capistrano
# gem 'capistrano'
# To use debugger (ruby-debug for Ruby 1.8.7+, ruby-debug19 for Ruby 1.9.2+)
# gem 'ruby-debug'
# gem 'ruby-debug19', :require => 'ruby-debug'
# Bundle the extra gems:
# gem 'bj'
# gem 'nokogiri'
# gem 'sqlite3-ruby', :require => 'sqlite3'
# gem 'aws-s3', :require => 'aws/s3'
# Bundle gems for the local environment. Make sure to
# put test-only gems in this group so their generators
# and rake tasks are available in development mode:
# group :development, :test do
# gem 'webrat'
# end
and my s3.yml (with the full keys in the place of "..."):
development:
bucket: andrea
access_key_id: AKIAII...
secret_access_key: vM977oy6W2TIbArCG9...
test:
bucket: andrea
access_key_id: AKIAII...
secret_access_key: vM977oy6W2TIbArCG9...
production:
bucket: andrea
access_key_id: AKIAII...
secret_access_key: vM977oy6W2TIbArCG9...
Here's the Log:
WARNING: Can't mass-assign protected attributes: infos_attributes
[1m[36mAREL (0.3ms)[0m [1mINSERT INTO "activities" ("photo", "created_at", "updated_at", "home", "photo_file_name", "photo_content_type", "photo_file_size", "photo_updated_at", "name") VALUES (NULL, '2011-04-20 13:27:57.428869', '2011-04-20 13:27:57.428869', NULL, NULL, NULL, NULL, NULL, NULL)[0m
[paperclip] Saving attachments.
Redirected to http://localhost:3000/activities/15
Completed 302 Found in 45ms
Started GET "/activities/15" for 127.0.0.1 at 2011-04-20 15:27:57 +0200
Processing by ActivitiesController#show as HTML
Parameters: {"id"=>"15"}
[1m[35mActivity Load (0.9ms)[0m SELECT "activities".* FROM "activities" WHERE "activities"."id" = 15 LIMIT 1
Rendered activities/show.html.erb within layouts/application (13.5ms)
Completed 200 OK in 39ms (Views: 17.2ms | ActiveRecord: 1.2ms)
Started GET "/photos/large/missing.png" for 127.0.0.1 at 2011-04-20 15:27:57 +0200
ActionController::RoutingError (No route matches "/photos/large/missing.png"):
If you need more informations let me know!
Oh, i've tried with heroku restart
, but nothing changed.
Upvotes: 4
Views: 2508
Reputation: 5879
Oh yeah!!
Finally i caught it: I need to change my _form.html.erb
, from
<%= form_for @activity do |f| %>
...
<% end %>
to
<%= form_for @activity, :html => { :multipart => true } do |f| %>
...
<% end %>
Upvotes: 4