2017-09-14 27 views
1

尝试围绕通过CarrierWave上传图像的第一次尝试。我可以看到正在发送的数据,但随后在控制台中我还看到了一个BEGIN和一个ROLLBACK。 所以,这里是我迄今为止Rails 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 

Uploader是因为产生相当多,存储的文件,它使用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 

在页面上,我正在运行的上传,它返回到新的形式和THI文本显示在底部

<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? 我也注意到,有我的公共/上传/ tmp中创建的文件夹和图像实际上是保存该文件夹中

感谢您的任何建议

回答

0

@photo.save之前,我们需要做的@photo.valid?然后检查错误消息@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

@Andrea如果您需要更多帮助,请提问问题的详细信息,然后向我发送链接,以便我可以阅读并尝试帮助您。谢谢 –

+0

谢谢@Fabrizio其实我刚刚发布了另一个问题https://stackoverflow.com/questions/46268538/rails-couldnt-find-nested-resource-with-id – Andrea

相关问题