1

添付ファイルが必要なプロジェクトに取り組んでいます。具体的には、製品モデルに写真を添付する必要があります。

そうは言っても、私はレールキャスト(ここにリンク)に従い、ほ​​とんどの指示に従いました(古いと思われるものもあります)。私は次のようになりました:

製品フォーム:

  <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

結果の添付ファイルを確認するには、products showビューで次のようにします。

<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)

常に「行方不明」と表示されているため、実際に画像を見ることはありません。

public/system ディレクトリを調べると、モデル ディレクトリ、Paperclip ストレージ ディレクトリ ツリー、および保存しようとした画像が表示されます。

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

ファイルにImageMagickパスを設定しました

config/initializers/paperclip.rb

保持するもの:

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

そのため、画像がアップロードされているのに読み取れない理由がわかりません。添付ファイルに関する限り、これはデータベースに何も保存しないことに関係している可能性がありますが、それらが別の問題なのか、それとも別の問題なのかはわかりません。

どんな助けでも大歓迎です。

ありがとう!

使用: Rails 3.2.10 "paperclip", "~> 3.0"

4

1 に答える 1

1

post リクエストでファイルがアップロードされているように見えますが、スクリプトが実行されている SQL を見ると、すべての pic 属性が nil に設定されています。

モデルの attr_accessor 行がどこから来たのかわかりません。レールキャストや現在のペーパークリップ ドキュメントで言及されていないからです。これらが問題の原因である可能性があります。

Railscast は 5 年前のものなので、 https://github.com/thoughtbot/paperclipのgithub の paperclip プロジェクトにアクセスし、現在のバージョンの paperclip のインストール方法と使用方法を読むことをお勧めします。起動して実行するための非常に簡単なチュートリアルがあります。

于 2013-04-22T23:32:49.910 に答える