使用 wicked_pdf 时控制器操作缺少模板
Controller action is missing templates while using wicked_pdf
我正在使用 wicked_pdf 创建包含数据库内容的 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
show.pdf.erb:
<h1>Hello World</h1>
当我尝试打开 show.pdf.erb 时出现此错误:
PdfPagesController#show 缺少此请求格式和变体的模板。 request.formats: ["text/html"] request.variant: []
如果我使用 link_to 而不传递变量,我会得到同样的错误。
如果我从控制器中删除 @user = User.find(params[:user_id]) ,替换 link_to helper 和 html href 属性并将 get 'pdf_pages/show' 添加到 routes.rb 一切正常。
我做错了什么?
默认情况下,控制器将所有请求视为 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
中指定了。
我正在使用 wicked_pdf 创建包含数据库内容的 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
show.pdf.erb:
<h1>Hello World</h1>
当我尝试打开 show.pdf.erb 时出现此错误:
PdfPagesController#show 缺少此请求格式和变体的模板。 request.formats: ["text/html"] request.variant: []
如果我使用 link_to 而不传递变量,我会得到同样的错误。
如果我从控制器中删除 @user = User.find(params[:user_id]) ,替换 link_to helper 和 html href 属性并将 get 'pdf_pages/show' 添加到 routes.rb 一切正常。
我做错了什么?
默认情况下,控制器将所有请求视为 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
中指定了。