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]
Czy używasz systemu Windows? – boholdyjeramae
@jeramaedybohol Nie, Ubuntu. –