2015-09-16 39 views
0

我正在關注來自railscast(http://railscasts.com/episodes/220-pdfkit)的教程,並在嘗試實現PDF鏈接時陷入困境。原來的代碼是:_path的替代方案

<p id="pdf_link"><%= link_to "Download Invoice (PDF)", order_path(@order, :format => "pdf") %></p> 

不過,我使用HAML所以我編輯的行如下:

= link_to 'Download PDF', order_path(@order, :format => "pdf") 

我已經意識到,order_path將涉及在routes.rb中指定的路線。問題是我的應用程序沒有路徑文件夾(從另一個開發人員繼承應用程序)。因此,我將如何去在haml代碼中創建這個路徑。

另外我想知道更換@order。在查看代碼時,我注意到它是這樣聲明的。有人可以解釋這段代碼聲明的順序是什麼?

@order = Order.find(params[:id]) 
+0

這是Rails問題還是Sinatra問題? Sinatra本身沒有'link_to'和'_path'方法。 – matt

+0

@matt我不太確定。這個應用程序很奇怪,它引用了Sinatra,但link_to等在它裏面工作,所以你告訴我它是Rails還是Sinatra或者它可以兼得? – user3385136

+0

也許是[Padrino](http://www.padrinorb.com/)? – matt

回答

2

路徑在Rails中聲明在config/routes.rb文件中。看看吃了this guide欲瞭解更多信息。

order_path是一種助手方法,在您聲明路線時,鋼軌會爲您提供幫助。您可以通過在應用程序根文件夾中運行rake routes命令來查看這些路由別名。

關於這一行:

@order = Order.find(params[:id]) 

這將嘗試使用傳入ID在請求參數,以獲得從數據庫中Order。有關更多信息,請參見this guide

我的建議,閱讀整個Rails Guide,讓你知道你在處理什麼。