2016-12-31 13 views
5

EDIT: Tôi đã quản lý để có được nó để bắt đầu ném các lỗi bằng cách thay đổi các mô hình như thế này:Rails Giấy Clip tải lên không làm việc ... Không có lỗi ném, cuộn lại giao dịch

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 

điều khiển dành cho trông giống như này:

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) 

Tuy nhiên, việc sửa chữa thông thường cho vấn đề này, thiết lập các tập tin development.rb này đã không làm việc:

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

(Bắt đầu OP) Tôi đang làm việc để thiết lập kẹp giấy (với ImageMagick) để người dùng trên ứng dụng của tôi có thể tải lên hình đại diện cho tài khoản của họ. Các avatar sẽ được lưu cục bộ trên máy chủ (nói PC của tôi vì ứng dụng hiện đang được phát triển). Tôi đã theo tài liệu trên GitHub để thiết lập kẹp giấy. Mọi thứ dường như đang hoạt động ... Ngay cho đến khi tôi cố gắng thực sự tải lên một hình ảnh. Sau khi tôi gửi (trong trường hợp này, chỉnh sửa một người dùng hiện có để thêm hình ảnh, nhưng điều tương tự cũng xảy ra khi tạo người dùng mới), nó không gây ra lỗi hoặc bất cứ điều gì, nó chỉ tải lại trang và bỏ nút gửi. Thông báo sau xuất hiện trong bảng điều khiển:

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) 

Trong chế độ xem, bất cứ nơi nào hình ảnh được cho là xuất hiện, thay vào đó nó bị thiếu. Thú vị là nó cho phép tôi tạo và cập nhật người dùng nếu tôi không tải lên hình ảnh, mặc dù tôi có hình ảnh được yêu cầu trong các tham số. Tôi hoàn toàn không biết gì về lý do tại sao điều này xảy ra. Nếu nó giúp, đây là là mô hình người dùng của tôi, điều khiển tôi v.v .:

tài mẫu:

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 

Người dùng điều khiển:

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 

Xem để cập nhật người dùng:

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

Nếu bạn cần thêm thông tin, tôi có thể cung cấp. Cảm ơn bạn đã giúp đỡ, tôi chắc chắn rằng tôi đã mắc phải một số sai lầm tầm thường, nhưng tôi không thể tìm thấy nó ... Tôi mới đến đường ray, nhưng nó đã rất thú vị cho đến nay!

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

Bạn đang sử dụng Windows? – boholdyjeramae

+0

@jeramaedybohol Không, Ubuntu. –

Trả lời

-1

Đối với một số lý do, tôi đã có thể khắc phục vấn đề này theo cách đặc biệt nhất có thể. TÔI KHÔNG CÀI ĐẶT ImageMagick, một sự phụ thuộc của Paperclip, và đột nhiên mọi thứ đã hoạt động? Tôi hoàn toàn không thể giải thích tại sao, nhưng hey, nó đã làm việc ... Rõ ràng không phải là câu trả lời hay nhất là tại sao điều này xảy ra, nhưng ít nhất tôi có thể tiếp tục. Tôi hy vọng vấn đề không xuất hiện trở lại khi chuyển sang sản xuất.

+0

Nó gây hiểu lầm, bạn đã chứng minh được hai bản cài đặt của ImageMagick. –

Các vấn đề liên quan