1

我在为特定用例构建的 gem 中使用 Paperclip。我的 gem 为非程序员创建和编辑表单创建了一个界面,然后允许用户回答这些表单。

我想使用 Paperclip 为问题提供“文件上传”输入类型,因此我的表单更加通用。但是,这意味着我需要使用该file_field_tag方法来显示文件输入,并且我需要手动将通过该输入提交的任何信息保存到适当的模型对象中。目前我正在使用名称发送信息question_1,然后尝试使用params["question_1"].

我的代码如下所示:

    answer.update_attributes(upload: params["question_1"])

但是我遇到了一个No handler found for <image_name>错误,我无法弄清楚我做错了什么。我认为 Paperclip 在我将数据从file_field?

解决方案:

我的表格看起来像这样:<%= form_for @answer_set, multipart: true do %>当它应该看起来像这样:<%= form_for @answer_set, html: { multipart: true } do %>

4

1 回答 1

2

我用

has_attached_file :image
validates_attachment_presence :image
validates_attachment_content_type :image, :content_type => ['image/jpeg', 'image/png', 'image/jpg', 'image/pjeg']

进而:

@upload = Upload.find(params[:id])
@upload.update_attributes(params[:upload])

配置/环境.rb

Rails::Initializer.run do |config|
  config.gem "paperclip", version: "~> 2.7"
end

该线程还建议检查表单上的多部分 https://stackoverflow.com/a/10076046/1354978

answer_form_for @upload, :html => {:multipart => true} do |f|

该页面上还有其他可能的解决方案。

于 2012-08-21T04:17:50.303 回答