0

我想知道如何在 rails v3 上使用 ruby​​ 实现图像上传?到目前为止,我得到的是图像已上传到我的 public/uploads 目录,但在数据库中存储了表单中的散列值。

哈希值的 EX:

!ruby/object:ActionDispatch::Http::UploadedFile 
content_type: image/jpeg
headers: |
  Content-Disposition: form-data; name="farmer[picture]"; filename="picture.JPG"
  Content-Type: image/jpeg

original_filename: picture.JPG
tempfile: !ruby/object:File {}

控制器:

def new
    @farmer = Farmer.new
  end

  def create
    @farmer = Farmer.new(params[:farmer])
    if @farmer.save
      uploaded_io = params[:farmer][:picture]
      File.open(Rails.root.join('public', 'uploads', uploaded_io.original_filename), 'w') do |file|
        file.write(uploaded_io.read)
      end
      flash[:success] = "#{@farmer.firstName} #{@farmer.lastName} added"
      redirect_to @farmer
    else
      redirect_to new_path
    end
  end

型号:空

看法:

<%= form_for(@farmer, :html => { :multipart => true }) do |f| %>
  <div class="field">
    <%= f.label :picture, "Picture" %>
    <%= f.file_field :picture %>
  </div>
  <div class="actions">
    <%= f.submit "Post"%>
  </div>
<% end %>

那么我想要帮助的是如何将uploads/image.JPG 存储到数据库中而不是散列值?

4

2 回答 2

3

尽量不要发明自行车,回形针宝石是您正在寻找的东西,您还可以在以下位置找到替代品:ruby toolbox

干杯

于 2011-08-29T19:55:49.170 回答
1

Carrierwave 最适合您的问题。如果您使用的是peperclip,您可以尝试用carrierwave 替换。如果您有任何问题,请告诉我

于 2012-04-24T13:42:54.570 回答