2

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 などがデータベースにあることを確認し、サーバーを再起動しました。

4

0 に答える 0