suryveyor gem如何以pdf格式输出调查?

时间:2013-04-11 16:22:21

标签: ruby-on-rails ruby-on-rails-3 rubygems surveyor-gem

我阅读了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')

我不理解请帮忙。

1 个答案:

答案 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.erbindex.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>

这应该给你一些核心理由来解决