Railsアプリケーションでペーパークリップを動作させようとしていますが、これまでのところ成功していません。そうするのを手伝ってください。関連情報と思われるものを以下に記載しました。質問にお答えします。
アップロードされた写真の名前をデータベースに保存しており、パスがあるようです:
[13] pry(main)> Order.last
Order Load (0.3ms) SELECT "orders".* FROM "orders" ORDER BY "orders"."id" DESC LIMIT 1
=> #<Order id: 22, quantity: 13, created_at: "2013-02-03 21:47:46", updated_at: "2013-02-03 21:47:46", user_id: 8, drawing_file_name: "friends.jpg", drawing_content_type: nil, drawing_file_size: nil, drawing_updated_at: nil>
[14] pry(main)> Order.last.drawing
Order Load (0.2ms) SELECT "orders".* FROM "orders" ORDER BY "orders"."id" DESC LIMIT 1
=> /system/orders/drawings/000/000/022/original/friends.jpg
でも:
- そのパスの下、システム上、またはアプリケーション ファイル内に何も見つかりません
これらのような他の回答から、フォームから渡された私の params ハッシュにはもっと多くのコンテンツが必要なようです。今のところ、それは短すぎるように見える単なる文字列名です
[2] pry(#<OrdersController>)> params => {"utf8"=>"✓", "authenticity_token"=>"eTInEukPQ84uIw3TPIdI+u0zo49dQlY68gxrodIoPdA=", "quantity_field"=>"34", "drawing_field"=>["friends.jpg"], "supplier_list"=>["1", "2"], "commit"=>"Create order", "multipart"=>"true", "action"=>"create", "controller"=>"orders"}
order.rb
class Order < ActiveRecord::Base
attr_accessible :quantity, :drawing
has_attached_file :drawing,
:url => "/:attachment/:id/:style/:basename.:extension",
:path => ":rails_root/public/:attachment/:id/:style/:basename.:extension"
_form.html.erb
<%= form_tag :action => 'create', :controller => 'orders', :multipart => true do %>
....
<div>
<%= file_field :order, :drawing %>
<%= label_tag :drawing, 'Attach drawing here' %>
</div>
<%= submit_tag "Create order", :disable_with => "Creating..." %>
orders_controller.rb
def create
#binding.pry
@order = Order.new#(params[:order])
@order.quantity = params[:quantity_field]
@order.user_id = current_user.id
@order.drawing = params[:order][:drawing]
did_order_save = @order.save
....
新しい注文をしようとすると、次のようになります。
Started POST "/orders?multipart=true" for 127.0.0.1 at 2013-02-05 20:07:20 -0800
Processing by OrdersController#create as HTML
Parameters: {"utf8"=>"✓", "authenticity_token"=>"eTInEukPQ84uIw3TPIdI+u0zo49dQlY68gxrodIoPdA=", "quantity_field"=>"334", "order"=>{"drawing"=>"profileBox.png"}, "supplier_list"=>["1"], "commit"=>"Create order", "multipart"=>"true"}
User Load (0.2ms) SELECT "users".* FROM "users" WHERE "users"."remember_token" = 'kGRbFvLaYseFaHvRR6sy6w' LIMIT 1
Completed 500 Internal Server Error in 19882ms
Paperclip::AdapterRegistry::NoHandlerError (No handler found for "profileBox.png"):
app/controllers/orders_controller.rb:54:in `create'
paperclip/imagemagick をインストールし、移行を行い、drawing_file_name などがデータベースにあることを確認し、サーバーを再起動しました。