2016-12-31 12 views
5

EDIT: Udało mi się dostać go, aby rozpocząć rzucanie błędów przez zmianę modelu do tego:Szyny Paper Clip przesyłanie nie działa ... Nie ma błędu rzucony, wycofuje transakcję

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 

Konsola wygląda teraz to:

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) 

jednak zwykle naprawić ten problem, ustawienie pliku development.rb to nie działa:

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

(Początek OP :) Pracuję nad skonfigurowaniem spinacza (z ImageMagick), aby użytkownicy w mojej aplikacji mogli przesyłać awatary na swoje konto. Awatary powinny być zapisywane lokalnie na serwerze (mów mój komputer, ponieważ aplikacja jest dopiero opracowywana). Postępowałem zgodnie z dokumentacją na GitHub, aby ustawić spinacz. Wszystko wydaje się działać ... Prawo, dopóki nie spróbuję załadować obrazu. Po przesłaniu (w tym przypadku edycji istniejącego użytkownika, aby dodać obraz, ale to samo dzieje się przy tworzeniu nowego użytkownika), nie powoduje to błędu ani niczego, po prostu przeładowuje stronę i szarżuje przycisk przesyłania. Pojawia się następujący komunikat w konsoli:

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]plication.com", "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) 

W widokach, gdziekolwiek obraz ma się pojawiać, to mówi zamiast brakuje. Interesujące jest to, że pozwala mi tworzyć i aktualizować użytkowników, jeśli nie załaduję obrazu, mimo że mam wymagany obraz w parametrach. Nie mam pojęcia, dlaczego tak się dzieje. Jeśli to pomoże, oto jest mój model użytkownika, moje kontrolery itp .:

modelu użytkownika:

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 

Użytkownicy Kontroler:

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 

Zobacz zaktualizować użytkownik:

<%= 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 %> 

Jeśli potrzebujesz dodatkowych informacji, mogę go dostarczyć. Dziękuję za pomoc, jestem pewien, że popełniłem trochę trywialny błąd, ale nie mogę go znaleźć ... Jestem nowy na szynach, ale do tej pory było to bardzo zabawne!

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

Czy używasz systemu Windows? – boholdyjeramae

+0

@jeramaedybohol Nie, Ubuntu. –

Odpowiedz

-1

Z jakiegoś powodu, udało mi się rozwiązać ten problem w sposób najbardziej szczególny sposób możliwe. ODINSTALOWAłem ImageMagick, zależność Paperclip, i nagle wszystko działało? Absolutnie nie potrafię wyjaśnić, dlaczego, ale hej, zadziałało ... Oczywiście nie najlepsza odpowiedź na pytanie, dlaczego tak się dzieje, ale przynajmniej mogę teraz iść dalej. Mam nadzieję, że problem nie pojawi się ponownie podczas przenoszenia do produkcji.

+0

To mylące, prawdopodobnie masz dwie instalacje ImageMagick. –

Powiązane problemy