POST上不会显示Carrierwave上传

时间:2013-09-03 21:25:59

标签: ruby-on-rails ruby-on-rails-4 carrierwave railscasts

我正在关注Railscast tutorial for Carrierwave uploads,并设置了相同的文件。如果我通过控制台上传文件,上传工作正常,但我的表单似乎没有正确发布。

我有我的基本表格,其中包括:

<%= f.label :receipt %><br>
<%= f.file_field :receipt %>

Rails 4会在表单上自动包含enctype="multipart/form-data"标记。

当我提交表单时,我会查看服务器日志。上传显示在参数中:

"receipt"=>#<ActionDispatch::Http::UploadedFile:0x007fcb25c624e0 @tempfile=#<Tempfile:/var/folders/ty/yks2xd9n76z9p49qzprvt1900000gn/T/RackMultipart20130903-53712-17zblz4>, 
@original_filename="Avatar.jpg", 
@content_type="image/jpeg", 
@headers="Content-Disposition: form-data; name=\"expense[receipt]\"; filename=\"Avatar.jpg\"\r\nContent-Type: image/jpeg\r\n">},

但是,INSERT语句不包括我的收据字段或文件的任何提及。没有任何错误。该文件未上传到我在Carrierwave中指定的目录。

关于这里可能出现什么问题的任何想法?这不是this answer的重复,这是jQuery Mobile的一个问题。我真的很难过正在发生的事情。

编辑:我可能也应该包含我的模型:

class Expense < ActiveRecord::Base
    mount_uploader :receipt, ReceiptUploader
end

我也有一个由Carrierwave生成的股票上传者类:

class ReceiptUploader < CarrierWave::Uploader::Base
    storage :file

    def store_dir
        "receipts"
    end
end

编辑2 :这是我的控制器,用于创建费用:

def new
  @expense = Expense.new
end

def create
  @expense = Expense.new(expense_params)

  respond_to do |format|
    if @expense.save
      format.html { redirect_to @expense, notice: 'Expense was successfully created.' }
      format.json { render action: 'show', status: :created, location: @expense }
    else
      format.html { render action: 'new' }
      format.json { render json: @expense.errors, status: :unprocessable_entity }
    end
  end
end

1 个答案:

答案 0 :(得分:0)

看起来params不允许上传通过。菜鸟错误。