Ich habe ein Modell namens Arbeitgeber und ich benutze Büroklammer, um Bilder hochzuladen. Es hat vorher funktioniert, aber aus irgendeinem Grund hat es aufgehört zu arbeiten. Ich bitte den Benutzer, ein Formular mit Name, Firma und einem Profilbild auszufüllen. In meinem Controller habe ich es so eingestellt, dass das Formular nicht gesendet wird, wenn etwas nicht stimmt. Der Benutzer wird auf die Startseite weitergeleitet, wenn das Formular gesendet und das Formular erneut wiedergegeben wird, wenn etwas nicht stimmt. Jetzt wird das Formular gesendet. In meinen Entwicklungsprotokollen ist auch der Name des Bildes angegeben. Meine Entwicklung sieht lange so (ich bin Aktualisierung hier das Formular, das gleiche Konzept wie neue Form):Warum speichert Paperclip das hochgeladene Bild nicht?
Started PATCH "/employers/werwer" for ::1 at 2017-06-28 21:37:15 -0400
Processing by EmployersController#update as HTML
Parameters: {"utf8"=>"✓", "authenticity_token"=>"JeftOiYu26+Vxo/f6NSigrUzHaTsukGvIoGxUVJkH4OGK+HcAs7fH5DWWDHnZiFTYs0/YqN4ZhAYxgwqmSfo7w==", "employer"=>{"name"=>"werwer", "company"=>"werwe", "position"=>"werwer", "number"=>"345345", "email"=>"[email protected]"}, "picture"=>#<ActionDispatch::Http::UploadedFile:0x0000000b570bb0 @tempfile=#<Tempfile:C:/Users/dinuka/AppData/Local/Temp/RackMultipart20170628-7872-a8xds6.png>, @original_filename="icons8-Manager-48.png", @content_type="image/png", @headers="Content-Disposition: form-data; name=\"picture\"; filename=\"icons8-Manager-48.png\"\r\nContent-Type: image/png\r\n">, "commit"=>"Update Employer", "id"=>"werwer"}
[1m[35mEmployer Load (1.0ms)[0m SELECT "employers".* FROM "employers" WHERE "employers"."slug" = ? ORDER BY "employers"."id" ASC LIMIT 1 [["slug", "werwer"]]
[1m[36m (1.0ms)[0m [1mbegin transaction[0m
[1m[35m (1.0ms)[0m commit transaction
Redirected to http://localhost:3000/employers/werwer
Completed 302 Found in 35ms (ActiveRecord: 3.0ms)
Wie Sie sehen können, das Bild mit dem Namen „a8xds6.png“ auf der dritten Zeile dargestellt ist. Aber ich bin mir nicht sicher, warum es als temporäre Datei eingereicht wurde.
Wenn ich die Schienenkonsole öffne und die Daten dieses bestimmten Arbeitgebers sehe, wird alles andere außer dem Bild aktualisiert. Das Bild sagt "Null".
Das ist meine Form:
<%= simple_form_for @employer do |f| %>
<%= f.input :name, required: true, label: 'Full name' %>
<%= f.input :company, required: true, label: 'Name of company' %>
<%= f.file_field :emp_img, required: true, name: 'picture' %>
<%= f.button :submit %>
<% end %>
Controller:
class EmployersController < ApplicationController
before_action :find_employer, only: [:show, :edit, :update, :destroy]
def index
end
def show
end
def new
@employer = current_user.build_employer
end
def create
@employer = current_user.build_employer(employer_params)
if @employer.save
redirect_to userinfos_path
else
render 'new'
end
end
def edit
end
def update
if @employer.update(employer_params)
redirect_to employer_path(@employer)
else
render 'edit'
end
end
def destroy
@employer.destroy
redirect_to root_path
end
private
def employer_params
params.require(:employer).permit(:name, :company, :emp_img)
end
def find_employer
@employer = Employer.friendly.find(params[:id])
end
end
Arbeitgeber Modell:
class Employer < ActiveRecord::Base
belongs_to :user
has_attached_file :emp_img, :styles => { :profile_pic => "200x200>" }, :default_url => "/images/:style/missing10.png"
validates_attachment_content_type :emp_img, :content_type => /\Aimage\/.*\Z/
end
Ausblick:
<%= image_tag @employer.emp_img.url(:profile_pic) %>
Bitte lassen Sie mich wissen, was ich ändern muss oder wenn Sie weitere Informationen benötigen. Ich weiß, dass die Entwicklungsprotokolle mehr Parameter als die in den Formularen zeigen, habe ich einige Parameter entfernt, um die Frage zu vereinfachen.
Bild nicht verschachtelt innerhalb des Arbeitgebers diese Methode wird durch einen Fehler –
Bearbeitete meine Antwort, aber ich denke, das benutzerdefinierte Name Attribut ist nicht notwendig. –
Bild ist nicht notwendig, weil f.emp_imp selbst den Arbeitgeber [emp_img] erstellt. In Ihrer Antwort haben Sie ein Bild innerhalb des Arbeitgebers hinzugefügt. Aber Bildparameter kommen getrennt. Es wird nicht durch einen Fehler, aber es spart nichts beim Speichern. –