如何通过Paperclip rails 4上传图像,文档文档和/或PDF文件

我想让用户将Word文档PDF文件上传到我的rails应用程序。 我的应用程序类似于Pinterest应用程序,用户可以创建Pins ,它们附加图片后跟描述(使用Paperclip将图像附加到Pin )。

这是我的Pins模型:

class Pin  { :medium => "300x300>", :thumb => "100x100>" } validates_attachment :image, content_type: { content_type: ["image/jpg", "image/jpeg", "image/png", "image/gif"] } validates :image, presence: true end 

我的Pins控制器:

 class PinsController  params[:page], :per_page => 15) end def show end def new @pin = current_user.pins.build end def edit end def create @pin = current_user.pins.build(pin_params) if @pin.save redirect_to @pin, notice: 'Pin was successfully created.' else render action: 'new' end end def update if @pin.update(pin_params) redirect_to @pin, notice: 'Pin was successfully updated.' else render action: 'edit' end end def destroy @pin.destroy redirect_to pins_url end private def set_pin @pin = Pin.find(params[:id]) end def correct_user @pin = current_user.pins.find_by(id: params[:id] ) redirect_to pins_path, notice: "Not authorized to edit this Pin" if @pin.nil? end def pin_params params.require(:pin).permit(:description, :image) end end 

我想知道我是否只需要为我的Pin模型中的Word文档PDF文件创建另一个has_attached_file方法,然后为用户创建一个视图来上传文件。

这取决于…

如果要附加图像文档,则需要为文档创建另一个回形针属性。 在你的模型上:

 has_attached_file :image, :styles => { :medium => "300x300>", :thumb => "100x100>" } validates_attachment :image, content_type: { content_type: ["image/jpg", "image/jpeg", "image/png", "image/gif"] } has_attached_file :document validates_attachment :document, :content_type => { :content_type => %w(application/pdf application/msword application/vnd.openxmlformats-officedocument.wordprocessingml.document) } 

如果要附加图像文档,可以执行以下操作:

 has_attached_file :document validates_attachment :document, :content_type => {:content_type => %w(image/jpeg image/jpg image/png application/pdf application/msword application/vnd.openxmlformats-officedocument.wordprocessingml.document)} 

如果选择第一个选项,则视图中需要两个文件输入,第二个只有一个。 这不是对或错。 这取决于你想做什么。