2015-09-16 208 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,让你知道你在处理什么。