0

我在网页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')

我不明白请帮忙。

4

1 回答 1

0

从您提供的网站的外观来看,您应该已经生成了surveyor:custom控制器。然后它会告诉您安装以下两个 gem

  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为您生成的操作中包含类似的内容。因此index,您的surveyor_controller.rb 操作中可能会有类似的内容

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') %>

我以前从未使用过测量师宝石。但是根据您提供的内容以及您想要的内容,我已尽力提供尽可能详细的解释。希望这可能对您或其他任何人有所帮助

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

查看.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>

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

于 2013-04-12T02:56:24.643 回答