我阅读了Surveyor gem和网页http://nubic.github.io/surveyor/
我在哪里将此行用于将调查报告导出为pdf?
%li= link_to "PDF", view_my_survey_path(:survey_code => response_set.survey.access_code, :response_set_code => response_set.access_code, :format => 'pdf')
我不理解请帮忙。
答案 0 :(得分:0)
根据您提供的网站的外观,您应该生成surveyor:custom
个控制器。然后它会告诉你安装以下两个宝石
gem 'pdfkit'
gem 'wkhtmltopdf'
但我个人认为我更喜欢使用wicked_pdf
。稍微改变一下教程,我会做以下几点:
rails generate surveyor:custom
这将生成控制器。那么我们以后可以使用wicked_pdf
将为我们提供的选项来配置它。
将以下行添加到您的Gemfile中:
gem 'wicked_pdf' #https://github.com/mileszs/wicked_pdf
gem 'wkhtmltopdf' #https://code.google.com/p/wkhtmltopdf/
为了正确导出wicked_pdf
,您需要在surveyor controller
中为您生成的操作中包含类似内容。因此,您在surveyor_controller.rb
index
操作中可能会出现类似的情况
respond_to do |format|
format.html
format.pdf do
render :pdf => "Survey Report",
:header => {:html => {:template => 'layouts/pdf.html.erb'}}
end
end
从这个回复栏中你可以/我应该想到views
中的以下目录 - app/views/survey/index.html.erb
在index.html.erb
内你将拥有上面的链接。
<%= link_to "PDF", view_my_survey_path(:survey_code =>
response_set.survey.access_code, :response_set_code =>
response_set.access_code, :format => 'pdf') %>
我之前从未使用过Surveyor gem。但根据你提供的东西,以及你想要的东西,我试图给出尽可能多的详细解释。希望这可能对您或其他任何人有所帮助
Wicked_PDF使用示例
def index
@bookings= Booking.scoped
booking = @bookings
@user = current_user
if params[:format] == 'pdf'
@bookings= @bookings.where(:day => Date.today.beginning_of_month..Date.today.end_of_month)
end
respond_to do |format|
format.html
format.pdf do
render :pdf => "#{Date.today.strftime('%B')} Overtime Report",
:header => {:html => {:template => 'layouts/pdf.html.erb'}}
OvertimeMailer.overtime_pdf(@user, booking).deliver
end
end
end
<强> View.html.erb 强>
<%= Link_to "Overtime", "booking.png", bookings(:format => "pdf") %>
为了生成PDF,您需要创建一个具有以下扩展名.pdf.erb
的文件,这意味着当处理链接时,它首先处理嵌入的ruby代码,然后输出PDF。所以在这种情况下我想做预订。所以我在我的views/bookings/index.pdf.erb
内创建了这个,我有以下内容:
<强>视图/预订/ index.pdf.erb 强>
<br />
<% @bookings.each do |booking| %>
<p>
<b>Employee</b>
<%= booking.user.try (:full_name)%>
</p>
<p>
<b>Hospital</b>
<%= booking.hospital.try(:name)%>
</p>
<p>
<b>Day</b>
<%= booking.day.to_s(:long_ordinal) %>
</p>
<p>
<b>Overtime</b>
<%= booking.overtime %>
</p>
<br />
<% end %>
<h2>Total Overtime is <b><%=@bookings.to_a.sum(&:overtime)%></b></h2>
这应该给你一些核心理由来解决