2017-09-23 67 views
0

我正在使用wicked_pdf创建包含数据库内容的pdf。控制器操作在使用wicked_pdf时缺少模板

首先,我创建了一个用户,并转发给看这样的页面:

<%= @user.name %> 
<%= link_to 'Create PDF', pdf_pages_path(:user_id => @user.id) %> 

我的控制器代码:

class PdfPagesController < ApplicationController 
    def show 
    @user = User.find(params[:user_id]) 

    respond_to do |format| 
     format.html 
     format.pdf do 
     render pdf: 'file_name' 
     end 
    end 
    end 
end 

我的路由文件:

Rails.application.routes.draw do 
    root 'landing#index' 
    get 'pdf_pages', :to => 'pdf_pages#show' 
    get 'users/new' 
    resources :users 
end 

表演。 pdf.erb:

<h1>Hello World</h1> 

当我尝试打开show.pdf.erb我得到这个错误:

PdfPagesController#显示缺少这一要求的格式和变异的模板。 request.formats: “text/html的”] request.variant:[]

  • 如果我使用不变量传递的link_to我得到同样的错误。

  • 如果删除@user = User.find(PARAMS [:USER_ID])从控制器,具有HTML href属性取代的link_to辅助细胞和添加得到 'pdf_pages /显示'到routes.rb中一切正常。

我在做什么错?

回答

1

默认情况下,控制器将所有请求视为HTML。您需要指定您请求的格式,如果是别的东西:

<%= link_to 'Create PDF', pdf_pages_path(:user_id => @user.id, format: :pdf) %> 

或者,如果你只是以往任何时候都要求就这个动作PDF,您可以在指定的路线是:

get 'pdf_pages', :to => 'pdf_pages#show', format: 'pdf' 

然后你不需要在link_to中指定它。