客户表单对象上的回形针附件?

时间:2015-01-29 00:55:43

标签: ruby-on-rails forms paperclip image-uploading

我已根据此railscast集http://railscasts.com/episodes/416-form-objects为每个步骤构建了一个包含自定义表单对象的多步骤表单。

简而言之,我有4个步骤对象,看起来像这样

class FormStep1
  include ActiveModel::Model

  attr_accessor :name, email

  validates :name, presence: true
  validates :email, presence: true

  ...

我现在可以在各个步骤上调用validate。这些对象中的每一个都有一个"提交"将其字段复制到另一个继承自ActiveRecord :: Base的AllTheSteps模型的方法

class AllTheSteps < ActiveRecord::Base
  ...

到目前为止,这一点很有效,但现在我需要在其中一个步骤中添加文件附件。我不确定该如何去做。我可以在FormStep对象中包含验证器并将其添加到徽标字段

class FormStep1
  include ActiveModel::Model
  include Paperclip::Validators

  attr_accessor :name, email, :picture

  validates :name, presence: true
  validates :email, presence: true
  validates_attachment_file_name :picture, :matches => [/png\Z/, /jpe?g\Z/]

但运行此代码会引发以下错误

undefined method `before_picture_post_process'

我觉得我还必须在某处引入has_attached_file,但由于我的表单对象不是活动记录,可能无法正常工作。然后还有如何将图像数据从表单对象复制到AllTheSteps对象的问题。

这甚至可以用回形针吗?还有其他选择可以使其可行吗?

谢谢!

1 个答案:

答案 0 :(得分:-1)

您可以按照以下步骤使用回形针上传图片:

1。)将gem添加到Gemfile

gem 'paperclip'

然后执行bundle install

2.)然后使用此命令生成图片附件

rails g paperclip report picture

3.)然后迁移图片的创建迁移

rake db:migrate

4.)然后在模型中添加

has_attached_file :picture, :styles => { :medium => "300x300>", :thumb => "100x100>" }, :default_url => "/images/:style/missing.png"
validates_attachment_content_type :picture, :content_type => /\Aimage\/.*\Z/