web-dev-qa-db-ja.com

画像、Word文書、および/またはペーパークリップ経由でPDFファイルをアップロードする方法Rails 4

ユーザーがWord Docsおよび[〜#〜] pdf [〜#〜]ファイルを自分のRailsアプリケーションにアップロードできるようにしたい。私のアプリはPinterestアプリに似ており、ユーザーはPinsを作成して、画像とそれに続く説明を添付できます(Paperclipを使用して画像をピン)。

これが私のピンモデルです:

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

私のピンコントローラー:

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

Word docsおよびPDFsファイル用に別のhas_attached_fileメソッドを作成してPinモデル内に作成する必要があるのではないかと思います。ユーザーがファイルをアップロードするためのビュー。

15
Cyzanfar

場合によります...

画像を添付する場合[〜#〜] and [〜#〜]ドキュメントには、ドキュメントに別のペーパークリップ属性を作成する必要があります。モデルについて:

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)}

最初のオプションを選択した場合、ビューに2つのファイル入力が必要になり、2番目のオプションは1つだけになります。これは正しいことでも間違っていることでもありません。それはあなたが何をしたいかによります。

35
Leantraxxx