2012-01-11 12 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

ありがとうございます。通常の状況下では、これはうまくいくと思います。私の問題は、私はこのリンクを自分のレールプロセスとは別のpdfプロセッサに渡しており、ファイルへの実際のファイルシステムのリンクが必要だということです。 asset_pathメソッドは、コンパイル/処理されたcssファイルのハッシュを追加せずにファイルへのリンクを提供するように見えます。つまり、#{Rails.root.to_s} /public/assets/pdf/pdf_layout-86723cb5eb9aff943867df0b379440c2.css "を渡すと動作しますが、このハッシュは変更される可能性があります。 – lundie

+0

[消化宝石](https://github.com/spohlenz/digestion)を使用してみてください。特定のファイル/パス上の指紋を無効にすることができます。スタイルシートのフィンガープリントを防止するには、あなたが言及した '{Rails.root.to_s}'メソッドを使うべきです。 –

+0

私は、手作業でcssファイルをパブリックフォルダに置いてしまいました。私は宝石を見ていましたが、今のところ私が必要とするのはただ1つのCSSファイルですので、私は病気と思っています。助けてくれてありがとう! – lundie

1

この質問は密接これに関連している: How does one reference compiled assets from the controller in Rails 3.1?

は、そこに私の答えを参照してください、しかし、より簡単に言えば、ソケットライブラリによって管理されるRailsアセットパイプラインにはRails.application.assetsからアクセスできます。これはSprockets::Environmentインスタンスで、Sprockets projectに記載されています。このように使用できます:

Rails.application.assets['application.css'].pathname #=> "/home/username/project..." 
Rails.application.assets['application.css'].to_s #=> "html, body { ..." 
関連する問題