2014-10-18 130 views
0

everyone。请帮我carrierwave和Rails 4Carrierwave不保存磁盘上的文件

型号:

class MediaItem < ActiveRecord::Base 
    mount_uploader :media_item, MediaItemUploader 
end 

模式:

create_table "media_items", force: true do |t| 
    t.string "file" 
    t.text  "description", default: "", null: false 
    t.datetime "created_at",    null: false 
    t.datetime "updated_at",    null: false 
end 

者:

class MediaItemUploader < CarrierWave::Uploader::Base 
    def store_dir 
    "public/" 
    end 

控制器:

class MediaItemsController < ApplicationController 
    def create 
    @media_item = MediaItem.new(media_item_params) 

    respond_to do |format| 
     if @media_item.save 
     format.html { redirect_to @media_item, notice: 'Media item was successfully created.' } 
     else 
     format.html { render :new } 
     end 
    end 
    end 

形式:

= form_for @media_item, :html => {:multipart => true} do |f| 
    .field 
    = f.label :description 
    = f.text_field :description 
    .field 
    = f.label :file 
    = f.file_field :file 
    .actions 
    = f.submit 'Save' 

的问题是,上传的文件没有出现在指定的目录和“media_item.media_item_url”视图中的返回空字符串。但是,它将记录保存到db中:

select file, description from media_items; 
#<ActionDispatch::Http::UploadedFile:0xba672374>|wetw 

回答

1

我的错误。

相反

mount_uploader :media_item, MediaItemUploader 

它必须是

mount_uploader :file, MediaItemUploader 

为 “文件” 是在数据库字段名,而不是 “media_item”