2017-09-14 3 views
1

CarrierWave를 통해 이미지를 업로드 할 때 처음 시도 할 때마다 머리를 감싸려고합니다. 데이터가 전송되는 것을 볼 수 있지만 콘솔에서 BEGIN과 ROLLBACK을 볼 수 있습니다. 그래서, 여기에 지금까지레일 Carrierwave "action"=> "create"} 허용됨 : false>

컨트롤러

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 

FORM

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

모델

class Photo < ApplicationRecord 
    mount_uploader :image, ImageUploader 
end 

업 로더가 생성 된 꽤 많이, 저장 파일이고 그것을 사용하는 내가 가진 무엇 MiniMagick 및 엄지 손가락 버전 활성화

내가 제출 버튼을 클릭하면

지금, 내가 콘솔에서 볼 :

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 

그리고 페이지

내가 업로드를 실행하고 어디에, 그것은 새로운 형태로 복귀 생 텍스트는 하단에 표시

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

실제로 허용되는 원인은 무엇입니까?이 경우 false입니까? 나는 우리가 다음 오류를 확인 @photo.valid? 할 필요가 @photo.save을하기 전에 어떤 제안

답변

0

에 대한

감사도 내 공개/업로드/tmp 디렉토리에 생성 된 폴더가있는 것으로 나타났습니다과 이미지가 실제로 해당 폴더에 저장됩니다 메시지 @photo.errors.full_messages

당신은 바인딩 놀리려는 이것을 확인하거나

아마 일부 필드가 누락 콘솔에이 메시지를두고 이런 이유로 그것을 다시

을 굴러 할 수 있습니다

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

흥미 롭습니다. 나는 다른 사이트에서 발견 된 디버거 라인 중 하나를 추가하려고 시도했지만 잘못하고 있다고 생각한다. 이제 문제는 제가 업 로더에서 미리보기 이미지를 사용하도록 설정했기 때문에 문제가 발생하는 이유를 파악해야합니다. 한 발 앞서. 좋은 팁 Fabrizio에 감사드립니다! – Andrea

+0

@ 안드레아 만약 당신이 더 많은 도움을 필요로한다면, 문제의 세부 사항을 가진 새로운 질문을하고 나에게 그것을 읽을 수 있도록 링크를 보내라. 감사합니다 –

+0

고마워요 @ Fabrizio 실제로 방금 다른 질문을 게시했습니다 https://stackoverflow.com/questions/46268538/rails-couldnt-find-nested-resource-with-id – Andrea