简体   繁体   English

PDF上传Ruby on Rails服务器-DB Postgres

[英]PDF upload Ruby on Rails server - DB Postgres

Hello I am trying to store a PDF document in a PostgreSQL database using Ruby Rails. 您好,我正在尝试使用Ruby Rails将PDF文档存储在PostgreSQL数据库中。 Currently my code looks like this: 目前,我的代码如下所示:

DB File: 数据库文件:

      '$20151126021922_create_pdf_creates.rb' 

class CreatePdfCreates < ActiveRecord::Migration
  def change
    create_table :pdf_creates do |t|
      t.binary :pdfload

      t.timestamps null: false
    end
  end
end

Model: 模型:

    '$pdf_create.rb'

class PdfCreate < ActiveRecord::Base    

end

Controller: 控制器:

    '$pdf_creates_controller.rb'

class PdfCreatesController < ApplicationController
  before_action :set_pdf_create, only: [:show, :edit, :update, :destroy]

  # GET /pdf_creates
  # GET /pdf_creates.json
  def index
    @pdf_creates = PdfCreate.all
  end

  # GET /pdf_creates/1
  # GET /pdf_creates/1.json
  def show
  end

  # GET /pdf_creates/new
  def new
    @pdf_create = PdfCreate.new
  end

  # GET /pdf_creates/1/edit
  def edit
  end

  # POST /pdf_creates
  # POST /pdf_creates.json
  def newpdf
    @pdf_create = PdfCreate.new(pdf_create_params)
    respond_to do |format|
      if @pdf_create.save
        format.html { redirect_to @pdf_create, notice: 'Pdf create was successfully created.' }
        format.json { render :show, status: :created, location: @pdf_create }
      else
        format.html { render :new }
        format.json { render json: @pdf_create.errors, status: :unprocessable_entity }
      end
    end
  end

  def create
    @pdf_create = PdfCreate.new(pdf_create_params)
    #data = File.read(Rails.root + "tmp/consent(1).pdf")
    #Document.create pdfload: data 

    respond_to do |format|
      if @pdf_create.save
        format.html { redirect_to @pdf_create, notice: 'Pdf create was successfully created.' }
        format.json { render :show, status: :created, location: @pdf_create }
        format.pdf { send_data @pdf_create.render}

        else
           format.html { render :new }
        #  format.json { render json: @pdf_create.errors, status: :unprocessable_entity }
      end
    end
  end

  # PATCH/PUT /pdf_creates/1
  # PATCH/PUT /pdf_creates/1.json
  def update
    respond_to do |format|
      if @pdf_create.update(pdf_create_params)
        format.html { redirect_to @pdf_create, notice: 'Pdf create was successfully updated.' }
        format.json { render :show, status: :ok, location: @pdf_create }
      else
        format.html { render :edit }
        format.json { render json: @pdf_create.errors, status: :unprocessable_entity }
      end
    end
  end

  # DELETE /pdf_creates/1
  # DELETE /pdf_creates/1.json
  def destroy
    @pdf_create.destroy
    respond_to do |format|
      format.html { redirect_to pdf_creates_url, notice: 'Pdf create was successfully destroyed.' }
      format.json { head :no_content }
    end
  end

  private
    # Use callbacks to share common setup or constraints between actions.
    def set_pdf_create
      @pdf_create = PdfCreate.find(params[:id])
    end

    # Never trust parameters from the scary internet, only allow the white list through.
    def pdf_create_params
      params.require(:pdf_create).permit(:pdfload)
    end
end

I send a pdf form and the result that is returned is me: 我发送pdf表格,返回的结果是我:

{"id":5,"pdfload":null,"created_at":"2015-11-26T03:24:37.457Z","updated_at":"2015-11-26T03:24:37.457Z"} {“ id”:5,“ pdfload”:null,“ created_at”:“” 2015-11-26T03:24:37.457Z“,” updated_at“:”“ 2015-11-26T03:24:37.457Z”}

What is wrong? 怎么了? Tks ks

You're sending the whole newly created record, not the PDF data stored in it. 您将发送整个新创建的记录,而不是存储在其中的PDF数据。

Try changing this: 尝试更改此:

format.pdf { send_data @pdf_create.render}

to this: 对此:

format.pdf { send_data @pdf_create.pdfload}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM