0

特にsassヘルパーの場合、SprocketsがRailsで生成するパスをオーバーライドしようとしています。

私はさまざまな解決策を使ってどこかに行き着きました:

a)ビュー内のimage_tagヘルパーをオーバーライドする

b)ActionView::AssetPaths計算関数をオーバーライドする

c)Sass :: Script::Functionsに新しいモジュールを含める

しかし、これをすべて行うよりもはるかに簡単な方法があるはずだと感じています。スプロケットパスを飾る良い方法はありますか?これを行っているのは、カスタムURLとパッケージングが発生しているためです。

4

1 に答える 1

2

したがって、最終的に、このメッセージがsprockets/context.rbに埋め込まれていることがわかりました。

Custom asset_path helper is not implemented
Extend your environment context with a custom method.

environment.context_class.class_eval do
  def asset_path(path, options = {})
  end
end

これは、Rails.application.assets.context_class.class_evalでasset_pathハンドラーを変更できることを示唆しているように見えますが、機能していないようです。これの例が見つからなかったので、それが私のせいなのかどうかはわかりません。

現在、これを機能させるための私のハックはこれです:

  ActionView::AssetPaths.class_eval do
    def compute_public_path(source, dir, options = {})
      my_transform(source)
    end
  end

  Sprockets::Helpers::RailsHelper::AssetPaths.class_eval do
    def compute_public_path(source, dir, options = {})
      my_transform(source)
    end
  end

  ActionView::Helpers::AssetTagHelper::AssetPaths.class_eval do
    def compute_public_path(source, dir, options = {})
      my_transform(source)
    end
  end

これら3つすべてが必要というわけではないのではないかと思いますが、よくわかりません。スプロケットを知っている人はこれについてコメントしたいですか?

于 2012-09-25T22:13:26.410 に答える