2017-09-23 10 views
0

データベースコンテンツを含むpdfを作成するためにwicked_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ヘルパーを交換し、routes.rbをしGET 'pdf_pages /ショー'を追加すべて正常に動作します。

私は間違っていますか?

答えて

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で指定する必要はありません。

関連する問題