0

行番号3、つまり@ user.update_attributes(params [:user])のユーザーコントローラーのアップロード方法でエラーが発生したため、画像をアップロードできません。

私のアップロード方法コード-

  def upload  
     @user = User.find_by_id(current_user.id)
   if @user.update_attributes(params[:user])  
    flash[:notice] = "Successfully uploaded Image."  
    if params[:user][:avatar].blank?  

      redirect_to @user  
    else  

      render :action => 'crop'  
    end  
  else  
    render :action => 'new'  
  end  
end  

私のフォーム-

   <%= form_for(:user, :url => {:action => 'upload'}, 
  :html => {:multipart => true}) do |f| %>

   <div class="inputs">

   <p>
     <%= f.label :avatar %>
     <%= f.file_field :avatar %>
   </p>
 </div>
   <div class="actions">
    <%= f.submit "Upload" %>
   </div>
 <% end %> 

私のユーザーモデル-

    class User < ActiveRecord::Base
      devise :database_authenticatable, :registerable,:recoverable, 
      :rememberable,  :trackable, :validatable

      attr_accessible :email, :password, :password_confirmation, :remember_me, :avatar

      has_attached_file :avatar, 
      :styles  => { :small => "100x100#", :large  => "500x500>" }  

    end

コマンドプロンプトでの出力-

    identify: unable to open image `file':  @ error/blob.c/OpenBlob/2498.
    identify: no decode delegate for this image format `file' @ error/constitute.c     /ReadImage/532.

 Started POST "/users/upload" for 127.0.0.1 at 2012-12-06 13:28:17 +0530
 Processing by UsersController#upload as HTML
 Parameters: {"utf8"=>"✓",  "authenticity_token"=>"mUPao835NCC8qXO553RJH50NWLhzQk03Z2G3Y0LwMYE=", 
"user"=>{"avatar"=>#<ActionDispatch::Http::UploadedFile:0xa20a418 @original_filename="freedomking.jpg",  @content_type="image/jpeg", @headers="Content-
 Disposition: form-data; name=\"user[avatar]\";  filename=\"freedomking.jpg            
 \"\r\nContent-Type: image/jpeg\r\n", @tempfile=#<File:/tmp/RackMultipart20121206-3368-127uzt5>>}, "commit"=>"Upload"}
User Load (0.3ms)  SELECT "users".* FROM "users" WHERE "users"."id" = 1 LIMIT 1
CACHE (0.0ms)  SELECT "users".* FROM "users" WHERE "users"."id" = 1 LIMIT 1
(1.1ms)  begin transaction
[paperclip] An error was received while processing:     
#<Paperclip::NotIdentifiedByImageMagickError: /tmp/stream20121206-7054-b
teogf.jpg is not recognized by the 'identify' command.>
[paperclip] An error was received while processing:    
#<Paperclip::NotIdentifiedByImageMagickError: /tmp/stream20121206-7054-b
teogf.jpg is not recognized by the 'identify' command.>
  (0.1ms)  rollback transaction
4

2 に答える 2

0

どのフォーマットをアップロードしようとしていますか?Paperclipの問題ではなく、ImageMagickの問題です。

Paperclipは、コマンドidentityを使用して、ImageMagickを使用して画像を処理します。.jpg、.png、.gifなどを使用できるようにするには、これらの形式やその他の形式もサポートするImageMagickをインストールする必要があります。

現在の問題は、ImageMagickがインストールされているように見えますが、一部の画像形式はサポートされていないことです。


OK、2回目の試行:宝石コカインを追加します。通常、レールは高いときにうまく機能します:P

gem "cocaine"
于 2012-12-06T08:26:11.203 に答える
0

ついに私は自分の問題の解決策を見つけました。

手順:

1)gemfileでに変更gem "paperclip"します。これにより、バンドルに最新のペーパークリップジェムがインストールされます。前のものはしませんでした。gem "paperclip", "~> 3.3.1"

2)ユーザーモデルの変更has_attached_file-

has_attached_file :avatar,
:path => ":rails_root/public/system/:attachment /:id/:style /:filename",
:url =>  "/system/:attachment/:id/:style/:filename", 
:styles  => { :small => "100x100#", :large => "500x500>" }  

これは、そのような問題を経験している誰かを助けるかもしれません。

乾杯!

于 2012-12-06T11:00:10.810 に答える