2017-09-14 1 views
1

J'ai essayé de faire la première tentative de téléchargement d'une image via CarrierWave. Je peux voir les données envoyées, mais dans la console, je vois aussi un BEGIN et un ROLLBACK dans l'action. Alors, voici ce que j'ai jusqu'à présentRails Carrierwave "action" => "créer"} autorisé: faux>

Contrôleur

class PhotosController < ApplicationController 
before_action :set_photo, only: [:show, :edit, :update] 

def index 
@photos = Photo.all 
end 

def new 
@photos = Photo.new 
end 

def create 
@photo = Photo.new(photo_params) 

if @photo.save 
    redirect_to photos_path, notice: "The photo #{@photo.name} has been uploaded." 
else 
    render "new" 
end 
end 

private 
def photo_params 
params.require(:photo).permit(:name, :image, :id) 
end 

def set_photo 
@photo = Photo.find(params[:id]) 
end 
end 

FORMULAIRE

<div class="well"> 
    <%= form_for Photo.new, html: { multipart: true } do |f| %> 
    <%= f.label :name %> 
    <%= f.text_field :name %> 
    <%= f.label :image %> 
    <%= f.file_field :image %> 
    <%= f.submit "Save", class: "btn btn-primary" %> 
    <% end %> 
    </div> 

MODÈLE

class Photo < ApplicationRecord 
    mount_uploader :image, ImageUploader 
end 

Uploader est à peu près aussi généré, le stockage est un fichier et il utilise MiniMagick et activé la version du pouce

Maintenant, quand je clique sur le bouton d'envoi, je vois cela dans la console:

Started POST "/photos" for 127.0.0.1 at 2017-09-14 22:11:25 +0200 
Processing by PhotosController#create as HTML 
Parameters: {"utf8"=>"V", "authenticity_token"=>"Aj4CyJLaxh439igdVYJ60Pz9TqLzuvPVfkh903YAcaVuIqU8bKmX0zrgbL/GvnabcQ7i/hsqWxwvG1NRQO16JA==", "photo 
"=>{"name"=>"fdsfds", "image"=>#<ActionDispatch::Http::UploadedFile:0xa96f1d0 @tempfile=#<Tempfile:C:/Users/Andrea/AppData/Local/Temp/RackMultipart2 
0170914-4696-1pwrynm.jpg>, @original_filename="Clipboard02.jpg", @content_type="image/jpeg", @headers="Content-Disposition: form-data; name=\"photo[ 
image]\"; filename=\"Clipboard02.jpg\"\r\nContent-Type: image/jpeg\r\n">}, 
"commit"=>"Save"} 
(1.0ms) BEGIN 
(0.0ms) ROLLBACK 

Et sur la page où je suis en cours d'exécution le téléchargement, il retourne à la nouvelle forme et thi texte apparaît en bas

<ActionController::Parameters {"utf8"=>"✓", "authenticity_token"=>"....(manuallyremoved)==", "photo"=><ActionController::Parameters {"name"=>"fdsfds", "image"=>#<ActionDispatch::Http::UploadedFile:0xa96f1d0 @tempfile=#<Tempfile:C:/Users/Andrea/AppData/Local/Temp/RackMultipart20170914-4696-1pwrynm.jpg>, @original_filename="Clipboard02.jpg", @content_type="image/jpeg", @headers="Content-Disposition: form-data; name=\"photo[image]\"; filename=\"Clipboard02.jpg\"\r\nContent-Type: image/jpeg\r\n">} permitted: false>, "commit"=>"Save", "controller"=>"photos", "action"=>"create"} permitted: false> 

Alors qu'est-ce qui provoque réellement le false: dans ce cas? J'ai aussi remarqué qu'il ya un dossier créé dans mon public/uploads/tmp et l'image est effectivement enregistrée dans ce dossier

Merci pour toutes suggestions

Répondre

0

avant de faire @photo.save que nous devons faire @photo.valid? puis vérifier l'erreur messages @photo.errors.full_messages

vous pouvez vérifier avec un levier de liaison ou met ce message à la console

probablement certains champs sont portés disparus et pour cette raison, il roule en arrière

def create 
@photo = Photo.new(photo_params) 
# set hear a binding.pry or 
@photo.valid? 
puts @photo.errors.full_messages  

if @photo.save 
    redirect_to photos_path, notice: "The photo #{@photo.name} has been uploaded." 
else 
    render "new" 
end 
end 
+0

Intéressant. J'ai essayé d'ajouter une de ces lignes de débogage trouvées sur un autre site, mais je suppose que je me trompais. Maintenant, il s'avère que le problème est dû au fait que j'ai activé les vignettes dans l'uploader, donc je dois comprendre pourquoi cela crée des problèmes. Un pas en avant cependant. Merci pour la bonne astuce Fabrizio! – Andrea

+0

@Andrea si vous avez besoin de plus d'aide poser une nouvelle question avec les détails du problème, puis envoyez-moi le lien afin que je puisse le lire et essayer de vous aider. Merci –

+0

Merci @Fabrizio En fait, je viens de poster une autre question https://stackoverflow.com/questions/46268538/rails-couldnt-find-nested-resource-with-id – Andrea