我正在使用 ActiveAdmin 创建“幻灯片”,它们实际上是在数据库中存储为二进制文件的图像:
class CreateSlides < ActiveRecord::Migration
def change
create_table :slides do |t|
t.binary :image
t.timestamps
end
end
end
我的管理脚本也很简单:
ActiveAdmin.register Slide do
permit_params :image
form do |f|
f.inputs 'Slide details' do
f.input :image, :as => :file
end
f.actions
end
end
所以当我按下“创建幻灯片”按钮时,我得到了这个异常:
wrong argument type ActionDispatch::Http::UploadedFile (expected String)
{"utf8"=>"✓",
"authenticity_token"=>"A/Ux8rduVlaQQrimOV0qWFAhXR8ATJnfKupp03RVXmg=",
"slide"=>{"image"=>#<ActionDispatch::Http::UploadedFile:0x007f1bb9515eb0 @tempfile=#<Tempfile:/tmp/RackMultipart20140507-20302-1yd7q93>,
@original_filename="info.jpg",
@content_type="image/jpeg",
@headers="Content-Disposition: form-data; name=\"slide[image]\"; filename=\"info.jpg\"\r\nContent-Type: image/jpeg\r\n">,
},
"commit"=>"Create Slide"}
我昨天又开始使用 Rails,但我一直是个新手。我对“强参数”了解一些,我认为 UploadFile 对他们来说是有效的类型。所以很奇怪为什么我有这个错误。我使用 Rails 4.1 和 Active Admin 0.6.3。