[英]How to upload image, word docs and/or PDF files via Paperclip rails 4
I would like to enable users to upload Word Docs and PDF files to my rails application. 我想让用户将Word文档和PDF文件上传到我的rails应用程序。 My app is similar to a Pinterest app, users can create Pins where they attach a picture followed by a description (used Paperclip to attach the image to the Pin ).
我的应用程序类似于Pinterest应用程序,用户可以创建Pins ,其中附加图片后跟描述(使用Paperclip将图像附加到Pin )。
Here is my Pins model: 这是我的Pins模型:
class Pin < ActiveRecord::Base
belongs_to :user
has_attached_file :image, :styles => { :medium => "300x300>", :thumb => "100x100>" }
validates_attachment :image, content_type: { content_type: ["image/jpg", "image/jpeg", "image/png", "image/gif"] }
validates :image, presence: true
end
My Pins controller: 我的Pins控制器:
class PinsController < ApplicationController
before_action :set_pin, only: [:show, :edit, :update, :destroy]
before_action :correct_user, only: [:edit, :update, :destroy]
before_action :authenticate_user!, except: [:index, :show]
def index
@pins = Pin.all.order("created_at DESC").paginate(:page => 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
I wonder if I just need to create another has_attached_file
method for the Word docs and PDFs files within my Pin model and then create a view for users to upload the file. 我想知道我是否只需要为我的Pin模型中的Word文档和PDF文件创建另一个
has_attached_file
方法,然后为用户创建一个上传文件的视图。
It depends... 这取决于...
If you want to attach an image AND a document you need to create another paperclip attribute for the document. 如果要附加图像和文档,则需要为文档创建另一个回形针属性。 On your model:
在你的模型上:
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) }
If you want to attach an image OR a document you can do the following: 如果要附加图像或文档,可以执行以下操作:
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)}
If you choose the first option you will need two file inputs on your view, with the second only one. 如果选择第一个选项,则视图中需要两个文件输入,第二个只有一个。 It's not right or wrong on this.
这不是对或错。 It depends what you want to do.
这取决于你想做什么。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.