Rails链接到show.html.erb的PDF版本

15

我使用Prawn插件创建了我们的Rails应用程序的PDF版本,涉及到Kase模型的页面 - Kase的链接为/kases/1,PDF版本的链接为/kases/1.pdf。

我该如何在show.html.erb中添加一个链接到PDF文件,使得无论查看哪个页面,它都会更新URL以显示正确的案例ID?

<% content_for :header do -%>
    <%=h @kase.jobno %> | <%=h @kase.casesubject %>
<% end -%>

<!-- #START SIDEBAR -->
<% content_for :sidebar do -%>
<% if @kase.avatar.exists? then %>
<%= image_tag @kase.avatar.url %>
<% else %>
<p style="font-size:smaller"> You can upload an icon for this case that will display here. Usually this would be for the year number icon for easy recognition.</p>
<% end %>
<% end %>
<!-- #END SIDEBAR -->

<ul id="kases_showlist">

<li>Date Instructed: <span><%=h @kase.dateinstructed %></span></li> 
<li>Client Company: <span><%=h @kase.clientcompanyname %></span></li>
<li>Client Reference: <span><%=h @kase.clientref %></span></li>
<li>Case Subject: <span><%=h @kase.casesubject %></span></li>
<li>Transport<span><%=h @kase.transport %></span></li>
<li>Goods<span><%=h @kase.goods %></span></li>
<li>Case Status: <span><%=h @kase.kase_status %></span></li>
<li>Client Company Address: <span class="address"><%=h @kase.clientcompanyaddress %></span></li>
<li>Client Company Fax: <span><%=h @kase.clientcompanyfax %></span></li>
<li>Case Handler: <span><%=h @kase.casehandlername %></span></li>
<li>Case Handler Tel: <span><%=h @kase.casehandlertel %></span></li>
<li>Case Handler Email: <span><%=h @kase.casehandleremail %></span></li>
<li>Claimant Name: <span><%=h @kase.claimantname %></span></li>
<li>Claimant Address: <span class="address"><%=h @kase.claimantaddress %></span></li>
<li>Claimant Contact: <span><%=h @kase.claimantcontact %></span></li>
<li>Claimant Tel: <span><%=h @kase.claimanttel %></span></li>
<li>Claiment Mob: <span><%=h @kase.claimantmob %></span></li>
<li>Claiment Email: <span><%=h @kase.claimantemail %></span></li>
<li>Claimant URL: <span><%=h @kase.claimanturl %></span></li>
<li>Comments: <span><%=h @kase.comments %></span></li>

</ul>

<!--- START FINANCE INFORMATION -->
<div id="kase_finances">
    <div class="js_option">
    <h2>Financial Options</h2><p class="finance_showhide"><%= link_to_function "Show","Element.show('finance_showhide');" %> / <%= link_to_function "Hide","Element.hide('finance_showhide');" %></p>
    </div>

<div id="finance_showhide" style="display:none">

<ul id="kases_new_finance">

  <li>Invoice Number<span><%=h @kase.invoicenumber %></span></li>
  <li>Net Amount<span><%=h @kase.netamount %></span></li>
  <li>VAT<span><%=h @kase.vat %></span></li>
  <li>Gross Amount<span><%=h @kase.grossamount %></span></li>
  <li>Date Closed<span><%=h @kase.dateclosed %></span></li>
  <li>Date Paid<span><%=h @kase.datepaid %></span></li>

</ul></div>
</div>
<!--- END FINANCE INFORMATION -->


<%= link_to 'Edit Case', edit_kase_path(@kase) %> |
<%= link_to 'Back', kases_path %> |
<a href="#">Top</a>

    <div style="width:120%; height: 50px; background-color: black; margin: 10px 0 0 -19px; padding: 0; background-color: #d4d4d4;">&nbsp;</div>

    <div class="js_option_kaseemails">
        <%= link_to_function "Show", 
        "Element.show('newinstructionemail1');"
        %> /
        <%= link_to_function "Hide", 
        "Element.hide('newinstructionemail1');"
        %>
    </div>

    <h3>New Instruction Email</h3>
    <div id="newinstructionemail1" style="display:none">
    <p class="kase_email_output">
    Hi,<br />
    <br />
    Many thanks for your instructions in the subject matter.<br />
    <br />
    We have allocated reference number <%=h @kase.jobno %> to the above claim.<br />
    <br />
    We have started our inquiries and will be in touch.<br />
    <br />
    Best Regards,<br />
    <br />
    <strong><%=h current_user.name %></strong>
    <br />
    McClelland &amp; Co<br />
    PO Box 149<br />
    Southport<br />
    PR8 4GZ<br />
    <br />
    Tel:  +(0) 1704 569871<br />
    Fax: +(0) 1704 562234<br />
    Mob: <%=h current_user.mobile %><br />
    E-mail:  <%= current_user.email %><br />
    <br />
    This e-mail and any files transmitted with it are confidential and intended solely for the use of the individual or entity to whom they are addressed.  If you receive this e-mail in error please notify the originator of the message.
    <br /><br />
    McClelland &amp; Co has taken every reasonable precaution to ensure that any attachment to this e-mail has been checked for viruses but it is strongly recommended that you carry out your own virus check before opening any attachment. McClelland &amp; Co cannot accept liability for any damage sustained as a result of software virus infection.
    </p>

    <%= link_to 'Edit Case', edit_kase_path(@kase) %> |
    <%= link_to 'Back', kases_path %> |
    <a href="#">Top</a>

    </div>

        <div style="width:120%; height: 20px; background-color: black; margin: 10px 0 0 -19px; padding: 0; background-color: #d4d4d4;">&nbsp;</div>

    <div class="js_option_kaseemails">
        <%= link_to_function "Show", 
        "Element.show('newinstructionemail');"
        %> /
        <%= link_to_function "Hide", 
        "Element.hide('newinstructionemail');"
        %>
    </div>

    <h3>New Instruction Email</h3>
    <div id="newinstructionemail" style="display:none">
    <p class="kase_email_output">
    Hi,<br />
    <br />
    Many thanks for your instructions in the subject matter.<br />
    <br />
    We have allocated reference number <%=h @kase.jobno %> to the above claim.<br />
    <br />
    We have started our inquiries and will be in touch.<br />
    <br />
    Best Regards,<br />
    <br />
    <strong><%=h current_user.name %></strong>
    <br />
    McClelland &amp; Co<br />
    PO Box 149<br />
    Southport<br />
    PR8 4GZ<br />
    <br />
    Tel:  +(0) 1704 569871<br />
    Fax: +(0) 1704 562234<br />
    Mob: <%=h current_user.mobile %><br />
    E-mail:  <%= current_user.email %><br />
    <br />
    This e-mail and any files transmitted with it are confidential and intended solely for the use of the individual or entity to whom they are addressed.  If you receive this e-mail in error please notify the originator of the message.
    <br /><br />
    McClelland &amp; Co has taken every reasonable precaution to ensure that any attachment to this e-mail has been checked for viruses but it is strongly recommended that you carry out your own virus check before opening any attachment. McClelland &amp; Co cannot accept liability for any damage sustained as a result of software virus infection.
    </p>

    <%= link_to 'Edit Case', edit_kase_path(@kase) %> |
    <%= link_to 'Back', kases_path %> |
    <a href="#">Top</a>

    </div>

        <div style="width:120%; height: 20px; background-color: black; margin: 10px 0 0 -19px; padding: 0; background-color: #d4d4d4;">&nbsp;</div>

    <div class="js_option_kaseemails">
    <%= link_to_function "Show", 
    "Element.show('newinstructionemail2');"
    %> /
    <%= link_to_function "Hide", 
    "Element.hide('newinstructionemail2');"
    %>
    </div>

    <h3>New Instruction Email</h3>
    <div id="newinstructionemail2" style="display:none;">
    <p class="kase_email_output">
    Hi,<br />
    <br />
    Many thanks for your instructions in the subject matter.<br />
    <br />
    We have allocated reference number <%=h @kase.jobno %> to the above claim.<br />
    <br />
    We have started our inquiries and will be in touch.<br />
    <br />
    Best Regards,<br />
    <br />
    <strong><%=h current_user.name %></strong>
    <br />
    McClelland &amp; Co<br />
    PO Box 149<br />
    Southport<br />
    PR8 4GZ<br />
    <br />
    Tel:  +(0) 1704 569871<br />
    Fax: +(0) 1704 562234<br />
    Mob: <%=h current_user.mobile %><br />
    E-mail:  <%= current_user.email %><br />
    <br />
    This e-mail and any files transmitted with it are confidential and intended solely for the use of the individual or entity to whom they are addressed.  If you receive this e-mail in error please notify the originator of the message.
    <br /><br />
    McClelland &amp; Co has taken every reasonable precaution to ensure that any attachment to this e-mail has been checked for viruses but it is strongly recommended that you carry out your own virus check before opening any attachment. McClelland &amp; Co cannot accept liability for any damage sustained as a result of software virus infection.
    </p>

    <%= link_to 'Edit Case', edit_kase_path(@kase) %> |
    <%= link_to 'Back', kases_path %> |
    <a href="#">Top</a>
    </div>

谢谢,

Danny

2个回答

40

对于任何感兴趣的人...

<p><%= link_to "Printable Case (PDF)", kase_path(@kase, :format => 'pdf') %></p>

这个工具做得很好。即使你使用的是Wicked PDF gem,它也能处理PDF格式的请求。


0

你需要创建一个控制器语句。使用prawn gem展示pdf文件的show页面非常简单。

def show
respond_to do |format|
format.html
format.pdf do
pdf = Prawn::Document.new
pdf.text "@varinlename.filename"
end

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接