2016-12-31 5 views
5

EDITをロールバックしません:Railsのペーパークリップのアップロードが機能していない...スローエラーは、トランザクション

class User < ApplicationRecord 
    has_secure_password 

    has_attached_file :avatar, 
     :path => ":rails_root/public/system/:attachment/:id/:basename_:style.:extension", 
     :url => "/system/:attachment/:id/:basename_:style.:extension", 
     :styles => { 
      :thumb => ['100x100#', :jpg, :quality => 70], 
      :preview => ['480x480#', :jpg, :quality => 70], 
      :large => ['600>',  :jpg, :quality => 70], 
      :retina => ['1200>',  :jpg, :quality => 30] 
     }, 
     :convert_options => { 
      :thumb => '-set colorspace sRGB -strip', 
      :preview => '-set colorspace sRGB -strip', 
      :large => '-set colorspace sRGB -strip', 
      :retina => '-set colorspace sRGB -strip -sharpen 0x0.5' 
     } 

    validates_attachment :avatar, 
     :presence => true, 
     :size => { :in => 0..10.megabytes }, 
     :content_type => { :content_type => /^image\/(jpeg|png|gif|tiff)$/ } 

    belongs_to :leitung 
    def admin? 
     self.role == "Admin" 
    end 
    def al? 
     self.role == "Al" 
    end 
end 

コンソールは、今のようになります。私はこれまでのモデルを変更することで、エラーを投げ始めるためにそれを得ることができましたこの:

Started POST "/leiter/new" for 127.0.0.1 at 2017-01-01 17:11:59 +0000 
Processing by Leiter::UsersController#create as HTML 
    Parameters: {"utf8"=>"✓", "authenticity_token"=>"2z3H8rWo2TLADJtx3kWiCufulyLSBzLLCrxLGaLFH9BWOlGtMZ7BuPFCte8cEY5fC6yFVVggbi6vhESWLFFlRA==", "user"=>{"first_name"=>"asdf", "last_name"=>"asdf", "pfadi_name"=>"asdf", "email"=>"[email protected]", "password"=>"[FILTERED]", "password_confirmation"=>"[FILTERED]", "leitung_id"=>"1", "role"=>"asdf", "avatar"=>#<ActionDispatch::Http::UploadedFile:0x007feb301d8058 @tempfile=#<Tempfile:/tmp/RackMultipart20170101-6509-1yifkdk.jpg>, @original_filename="nobody_m.original.jpg", @content_type="image/jpeg", @headers="Content-Disposition: form-data; name=\"user[avatar]\"; filename=\"nobody_m.original.jpg\"\r\nContent-Type: image/jpeg\r\n">}, "commit"=>"Create an account"} 
    User Load (0.1ms) SELECT "users".* FROM "users" WHERE "users"."id" = ? LIMIT ? [["id", 3], ["LIMIT", 1]] 
Command :: file -b --mime '/tmp/3068f4f020f8c43d300b1e06b58b829b20170101-6509-tn2f1u.jpg' 
Command :: identify -format '%wx%h,%[exif:orientation]' '/tmp/3068f4f020f8c43d300b1e06b58b829b20170101-6509-q2rz7h.jpg[0]' 2>/dev/null 
[paperclip] An error was received while processing: #<Paperclip::Errors::NotIdentifiedByImageMagickError: Paperclip::Errors::NotIdentifiedByImageMagickError> 
Command :: identify -format '%wx%h,%[exif:orientation]' '/tmp/3068f4f020f8c43d300b1e06b58b829b20170101-6509-q2rz7h.jpg[0]' 2>/dev/null 
[paperclip] An error was received while processing: #<Paperclip::Errors::NotIdentifiedByImageMagickError: Paperclip::Errors::NotIdentifiedByImageMagickError> 
Command :: identify -format '%wx%h,%[exif:orientation]' '/tmp/3068f4f020f8c43d300b1e06b58b829b20170101-6509-q2rz7h.jpg[0]' 2>/dev/null 
[paperclip] An error was received while processing: #<Paperclip::Errors::NotIdentifiedByImageMagickError: Paperclip::Errors::NotIdentifiedByImageMagickError> 
Command :: identify -format '%wx%h,%[exif:orientation]' '/tmp/3068f4f020f8c43d300b1e06b58b829b20170101-6509-q2rz7h.jpg[0]' 2>/dev/null 
[paperclip] An error was received while processing: #<Paperclip::Errors::NotIdentifiedByImageMagickError: Paperclip::Errors::NotIdentifiedByImageMagickError> 
    (0.1ms) begin transaction 
Command :: file -b --mime '/tmp/3068f4f020f8c43d300b1e06b58b829b20170101-6509-1p20xan.jpg' 
    Leitung Load (0.2ms) SELECT "leitungen".* FROM "leitungen" WHERE "leitungen"."id" = ? LIMIT ? [["id", 1], ["LIMIT", 1]] 
    (0.0ms) rollback transaction 
Redirected to http://localhost:3000/leiter/new 
Completed 302 Found in 136ms (ActiveRecord: 0.4ms) 

しかし、この問題に対する通常の修正、これにdevelopment.rbファイルは動作しませんでした設定:

Paperclip.options[:command_path] = "/usr/local/bin/" 

(OPの開始:)私は自分のアプリのユーザーが自分のアカウントのアバターをアップロードできるように、(ImageMagickを使って)paperclipを設定しています。アバターはサーバー上にローカルに保存する必要があります(私のPCは現時点でのみ開発中です)。私はGitHubのドキュメントを参照してペーパークリップを設定しました。すべてが動作しているようです...実際に画像をアップロードしようとするまで。私が提出した後(イメージを追加する既存のユーザーを編集するが、新しいユーザーを作成するときに同じことが起こる)、それはエラーまたは何も投げていない、単にページを再読み込みし、送信ボタンをグレー表示する。コンソールに次のメッセージが表示されます。

Started PUT "/leiter/edit" for 127.0.0.1 at 2016-12-31 18:33:19 +0000 
    ActiveRecord::SchemaMigration Load (0.1ms) SELECT "schema_migrations".* FROM "schema_migrations" 
Processing by Leiter::UsersController#update as HTML 
    Parameters: {"utf8"=>"✓", "authenticity_token"=>"RjjDgMQESgZ/9DVXTWoTvJDitAmYXqfMyVJJyKpXDsp3hE0dejJ6erMlV+wsFEH9bFlz7ZsvBlgPO63o8PkpYw==", "user"=>{"first_name"=>"Admin", "last_name"=>"Admin", "pfadi_name"=>"Admin", "email"=>"[email protected]", "leitung_id"=>"6", "role"=>"Admin", "avatar"=>#<ActionDispatch::Http::UploadedFile:0x00000003671238 @tempfile=#<Tempfile:/tmp/RackMultipart20161231-3455-mekx7p.jpg>, @original_filename="nobody_m.original.jpg", @content_type="image/jpeg", @headers="Content-Disposition: form-data; name=\"user[avatar]\"; filename=\"nobody_m.original.jpg\"\r\nContent-Type: image/jpeg\r\n">}, "commit"=>"Speichern"} 
    User Load (0.2ms) SELECT "users".* FROM "users" WHERE "users"."id" = ? LIMIT ? [["id", 1], ["LIMIT", 1]] 
    (0.1ms) begin transaction 
Command :: PATH=/usr/local/bin/:$PATH; file -b --mime '/tmp/3068f4f020f8c43d300b1e06b58b829b20161231-3455-1vvcs8q.jpg' 
Command :: PATH=/usr/local/bin/:$PATH; file -b --mime '/tmp/3068f4f020f8c43d300b1e06b58b829b20161231-3455-1cldo2f.jpg' 
    Leitung Load (0.2ms) SELECT "leitungen".* FROM "leitungen" WHERE "leitungen"."id" = ? LIMIT ? [["id", 6], ["LIMIT", 1]] 
    (0.1ms) rollback transaction 
No template found for Leiter::UsersController#update, rendering head :no_content 
Completed 204 No Content in 81ms (ActiveRecord: 1.4ms) 

ビューでは、画像が表示されるはずの場所ではなく、紛失と表示されます。興味深いことに、パラメータに必要な画像があるにもかかわらず、画像をアップロードしないとユーザーを作成して更新することができます。 なぜこのようなことが起こるのか、私は絶対に無知です。それが助け場合は、ここにある、私のコントローラ等:

ユーザーモデル私のユーザモデルである:

class User < ApplicationRecord 
    has_secure_password 
    has_attached_file :avatar, styles: { medium: "300x300>", thumb: "100x100>" }, default_url: "/images/:style/missing.png" 
    validates_attachment_content_type :avatar, :content_type => ["avatar/jpg", "avatar/jpeg", "avatar/png", "avatar/gif"] 
    belongs_to :leitung 
    def admin? 
     self.role == "Admin" 
    end 
    def al? 
     self.role == "Al" 
    end 
end 

ユーザーコントローラー:

class Leiter::UsersController < ApplicationController 
    def new 
     @newuser = User.new 
    end 
    def edit 
     @user = User.find(session[:user_id]) 
    end 
    def update 
     @user = User.find(session[:user_id]) 
     if @user.update_attributes(user_params) then 
      redirect_to '/leiter' 
     end 
    end 
    def create 
     @user = User.new(user_params) 
     if @user.save 
     redirect_to '/leiter' 
     else 
     redirect_to '/' 
     end 
    end 

    private 

    def user_params 
     params.require(:user).permit(:first_name, :last_name, :pfadi_name, :email, :password, :password_confirmation, :leitung_id, :role, :avatar) 
    end 
end 

Viewは、ユーザー更新する:

<%= simple_form_for @user, url: {action: "edit"}, html: { method: :put } do |f| %> 
    <%= f.text_field :first_name, :placeholder => "First name" %><br> 
    <%= f.text_field :last_name, :placeholder => "Last name" %><br> 
    <%= f.text_field :pfadi_name, :placeholder => "Pfadi name" %><br> 
    <%= f.email_field :email, :placeholder => "Email" %><br> 
    <%= f.association :leitung, :placeholder => "Leitung" %><br> 
    <%= f.text_field :role, :placeholder => "Rolle" %><br> 
    <%= f.input :avatar, as: :file %> 
    <%= f.submit "Speichern", class: "btn-submit" %> 
<% end %> 

追加情報が必要な場合は、それを提供することができます。助けてくれてありがとう、私はいくつかの些細な間違いをしたと確信していますが、私はそれを見つけることができません...私はレールには新しいですが、これまでのところとても楽しいです!

EDIT:

gem 'rails', '~> 5.0.0', '>= 5.0.0.1' 
gem "paperclip", "~> 5.0.0" 
ruby 2.3.1p112 (2016-04-26 revision 54768) [x86_64-linux] 
+0

Windowsを使用していますか? – boholdyjeramae

+0

@ jeramaedybohol Nope、Ubuntu。 –

答えて

-1

何らかの理由で、私は可能な限り最も独特な方法でこの問題を解決することができました。私はImageMagick、Paperclipの依存関係をアンインストールし、突然すべてがうまくいったのですか?私は絶対に理由を説明することはできませんが、ちょっと、それは働いた... 明らかになぜこれが起こっていたとして最高の答えではなく、少なくとも私は上に移動することができます。私は生産に移ったときに問題が再び現れないことを願っています。

+0

これは誤解を招きます。ImageMagickが2つインストールされている可能性があります。 –

関連する問題