Ruby on rails 如何将已发布的文件指定给控制器中的回形针模型

Ruby on rails 如何将已发布的文件指定给控制器中的回形针模型,ruby-on-rails,ruby-on-rails-3.2,paperclip,Ruby On Rails,Ruby On Rails 3.2,Paperclip,我正在尝试为网站的一部分提供一次性的图像上传功能(通过ajax)。现在,发布的值如下所示: Processing by ApiPostsController#upload_image as */* Parameters: {"file"=>#<ActionDispatch::Http::UploadedFile:0x007feb23c28420 @original_filename="yoko.jpg", @content_type="image/jpeg", @headers=

我正在尝试为网站的一部分提供一次性的图像上传功能(通过ajax)。现在,发布的值如下所示:

Processing by ApiPostsController#upload_image as */*
  Parameters: {"file"=>#<ActionDispatch::Http::UploadedFile:0x007feb23c28420 @original_filename="yoko.jpg", @content_type="image/jpeg", @headers="Content-Disposition: form-data; name=\"file\"; filename=\"yoko.jpg\"\r\nContent-Type: image/jpeg\r\n", @tempfile=#<File:/var/folders/58/8l1dcc5n6dd_7mhqvqr_3zm40000gn/T/RackMultipart20140107-70298-1mih9mx>>}
this is auth_token  WgfFAEz3JIApcWDjz2dRgA
我们的资产模型使用资产作为名称(不幸的是)

我试着按照回形针的自述,上面写着:

回形针最多可包含四个属性(所有属性都以该属性为前缀) 附件的名称,因此在以下情况下,每个模型可以有多个附件: 你希望)并给他们一个友好的前端。这些属性是:

_文件名 _文件大小 _内容类型 _更新地址

默认情况下,使用回形针只需要_文件_名称 操作

但是我得到了这个错误

ActiveRecord::RecordInvalid(验证失败:资产不能为空): app/controllers/api_posts_controller.rb:21:in'upload_image'

如何让回形针接受此上载文件?

尝试:

@asset.asset = params[:file]
文档中所写的内容意味着您可以将这四列添加到模型中,并在保存附件时自动填充它们
asset\u file\u name
是唯一必需的列,它将包含在服务器上创建的新文件的名称。
如果您单独指定文件名,您将只填充数据库中的一列,但文件本身不会保存在服务器的磁盘上-您需要指定整个文件,回形针将处理其余的文件

这看起来很有效;非常感谢你!!我得等几分钟。
mysql> describe assets;
+----------------------+--------------+------+-----+---------+----------------+
| Field                | Type         | Null | Key | Default | Extra          |
+----------------------+--------------+------+-----+---------+----------------+
| id                   | int(11)      | NO   | PRI | NULL    | auto_increment |
| name                 | varchar(255) | YES  |     | NULL    |                |
| created_at           | datetime     | NO   |     | NULL    |                |
| updated_at           | datetime     | NO   |     | NULL    |                |
| asset_file_name      | varchar(255) | YES  |     | NULL    |                |
| asset_content_type   | varchar(255) | YES  |     | NULL    |                |
| asset_file_size      | int(11)      | YES  |     | NULL    |                |
| asset_updated_at     | datetime     | YES  |     | NULL 
@asset.asset = params[:file]