2017-08-20 38 views
0

我想,以產生具有以下respond_to代碼塊中的PDF文件(wicked_pdf GEM)格式化link_to標籤:調用特定的respond_to塊的方法

respond_to do |format| 
     format.html 
     format.pdf do 
     render pdf: "file_name" 
     end 
    end 

我已經創建的塊用JavaScript方法。但是,獲得JS渲染是相當容易的:只在表單中添加remote: true

在其他MIME類型或respond_to代碼塊方法的情況下,我不知道怎麼寫我link_to標籤,讓控制器知道我想對另一個特定的方法...

回答

1

的方法之一是, respond_to塊通過查看url的擴展名來確定呈現哪種格式。舉例來說,如果我有我的路線:

Rails.application.routes.draw do 
    get 'home/index', as: 'home' 
end 

,然後在我的控制器:

class HomeController < ApplicationController 
    def index 
    respond_to do |format| 
     format.html { render inline: 'HTML' } 
     format.pdf { render inline: 'PDF' } 
    end 
    end 
end 

我可以用一個.pdf擴展獲得format.pdf

$ curl http://localhost:3000/home/index.pdf 
# PDF 
$ curl http://localhost:3000/home/index.html 
# HTML 

當創建一個link_to,你可以通過將它傳遞給url_for(或你使用的任何一個指定的路由幫助程序)來告訴它使用哪個擴展:

<%= link_to 'View the PDF', url_for(controller: 'home', action: 'index', format: 'pdf') %> 
# => <a href="/home/index.pdf">View the PDF</a> 
<%= link_to 'View the PDF', home_path(format: 'pdf') %> 
# => <a href="/home/index.pdf">View the PDF</a> 

的方式,我相信remote: true作品是通過設置接受頭。哪些Rails還用來弄清楚什麼respond_to項目要致電:

$ curl -H 'Accept: application/pdf' http://localhost:3000/home/index 
# PDF 
+0

非常感謝你! '格式:'pdf''到我的路徑做了伎倆 – Maxence