使用carrierwave上传文件

时间:2013-07-02 16:32:01

标签: ruby-on-rails mongodb file-upload mongoid carrierwave

我正在尝试使用Rails,Mongoid和Carrierwave上传文件。单击“提交”时,POST请求中“image”的值为{url : null}。当我使用logger从我的控制器中的create action查看“image”的值时,值为"C:\\fakepath\\tree.png"所以我不能直接使用File.open保存它来获取文件,因为这不是真正的道路。这是我第一次用上传器写一个表单,所以我不确定我在做什么。

这是我上传图片的表单:

<h1>New Post</h1>
<form id="new-post" name="post" enctype="multipart/form-data">
  <div class="field">
    <label for="name"> Name</label><br />
    <input type="text" name="name" id="name" value="<%= name %>" >
  </div>
  <div class="field">
    <label for="image"> Image</label><br />
    <input type="file" name="image" id="image" value="<%= image %>" >
  </div>
  <div class="field">
    <label for="content"> Content</label><br />
    <textarea rows="4" cols="50" name="content" id="content" value="<%= content %>" ></textarea>
  </div>
  <div class="actions">
    <input type="submit" value="Create Post" />
  </div>
</form>

以下是我为支持carrierwave而添加的内容:

的Gemfile:

gem "carrierwave"
gem "carrierwave-mongoid", :require => 'carrierwave/mongoid'

PostModel:

attr_accessible :name, :content, :image
mount_uploader :image, ImageUploader

ImageUploader:

class ImageUploader < CarrierWave::Uploader::Base
  storage :file
  def store_dir
    "uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}"
  end

1 个答案:

答案 0 :(得分:0)

试用本指南让您入门: http://www.tutorialspoint.com/ruby-on-rails/rails-file-uploading.htm

伪路径很好,你真的不关心路径本身,你关心上传的字节数据。