2012-01-11 186 views
1

是否有从控制器调用stylesheet_link_tag?我在内存中创建了一个PDF文件,并将它传递给另一个服务的api调用。我正在使用PDFKit,它需要我将样式表链接发送给它。我正在使用Rails 3.1,因此需要通过此方法访问资产管道。从控制器访问stylesheet_link_tag

感谢您的帮助!

回答

1

您应该能够使用这个从你的控制器访问样式表:

ActionController::Base.helpers.asset_path("stylesheet_i_want.css")

+0

感谢您的回应。在正常情况下,我认为这会奏效。我的问题是,我将这个链接传递给与我的rails进程分开的pdf处理器,并且它需要文件的实际文件系统链接。它看起来像asset_path方法提供了链接到文件没有编译/处理的CSS文件的哈希。也就是说,如果我传入“#{Rails.root.to_s} /public/assets/pdf/pdf_layout-86723cb5eb9aff943867df0b379440c2.css”,但我可以使其工作,但此散列可以更改。 – lundie 2012-01-11 22:24:16

+0

尝试使用[消化宝石](https://github.com/spohlenz/digestion) - 它会让你禁用特定文件/路径上的指纹。防止样式表得到指纹应该让你使用你提到的'{Rails.root.to_s}'方法。 – 2012-01-12 01:10:31

+0

我刚刚手动将css文件放在公用文件夹中。我看了一下gem,但现在只有一个我需要的css文件,所以我只是想自己做。谢谢您的帮助! – lundie 2012-01-12 14:17:30

1

这个问题是密切相关的这一个: How does one reference compiled assets from the controller in Rails 3.1?

见我的答案,但是,更简单地说,您可以从Rails.application.assets访问由套接字库管理的Rails资产管道。这将是一个Sprockets::Environment实例,记录在Sprockets project。你可以这样使用它:

Rails.application.assets['application.css'].pathname #=> "/home/username/project..." 
Rails.application.assets['application.css'].to_s #=> "html, body { ..."