web-dev-qa-db-ja.com

Rails 3.1に新しいアセットパスを追加します

Rails 3.1でアセットパイプラインに別のフォルダを追加する方法を知っている人はいますか?

app/assets/fontsと同じ方法でapp/assets/imagesを提供したいと思います。


更新:5-7-201

Application.rbファイルに、この質問を見つけた将来の人々のために明確にアセットパスを明示的に追加するための明確化を追加するだけです。

config.assets.paths << "#{Rails.root}/app/assets/fonts"

ただし、上記のパスはapp/assetsの下にあるため、明示的に追加する必要はありません。SprocketsがピックアップできるようにRailsアプリを再起動する必要があります。

app/assetslib/assets、またはvendor/assetsの外部にあるパスを明示的に追加する必要がありますが、Sprocketsはアプリケーションのロード時に存在したフォルダー内の新しいファイルを選択することを覚えておいてください。私の経験では、再起動せずにアセットパスで新しいフォルダーを選択することはありません。

78
Andrew

アンドリュー、_app/assets/fonts_は、実際にimagesとともに既にアセットのロードパスにあります。したがって、同じ方法でアセットを指すことができます:<%= asset_path('/Ubuntu/Ubuntu-R-webfont.eot') %> [1]または画像の参照方法。

これにも頭を巻くのに時間がかかりました。 _app/assets/fonts_と_app/assets/images_に同じ名前のファイルがある場合、何が起こるかまだわかりません。

[1] _app/assets/fonts/Ubuntu/Ubuntu-R-webfont.eot_にフォントがあると仮定します

74
Jason L Perry

アンドリュー、ジェイソンは同意しました。 FWIWこれをconfig/application.rbの横に置きます

  # Enable the asset pipeline
config.assets.enabled = true
config.assets.paths << "#{Rails.root}/app/assets/fonts"
43
Peter Ehrlich

app/assets/imagesapp/assets/fontsを作成することにより、それらはアセットパスに自動的に追加されます。

それらを作成した後、Railsコンソールを開いて、以下を確認します。

y Rails.application.config.assets.paths 

yyamlメソッドのショートカットです)

8
ocodo

パスを追加せずに機能しますが、アセットに有効なファイル名を使用していることに注意してください。

url("#{asset_path 'fontawesome-webfont.eot'}?#iefix") format('embedded-opentype'),
...
url("#{asset_path 'fontawesome-webfont.svg'}#FontAwesome") format('svg');

たとえば、この場合、?#iefixフォントファイル名の外側

3
montrealmike

Rails 3.1.0.rc4(そしておそらくもっと高い))の設定に新しいパスを追加せずに動作することを確認できます。サーバーをバウンスしました。

2
ragaskar

assets/fontsフォルダーを作成し、その上にフォントを追加し、cssファイルで次のようにテーマを使用します

@font-face {
  font-family: Sawasdee;
  src: url(Sawasdee.ttf);
}
1
S.M.Mousavi