我已根据此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对象的问题。
这甚至可以用回形针吗?还有其他选择可以使其可行吗?
谢谢!
答案 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/