1

私はSprocketsを使用しているSinatraプロジェクトに取り組んでいます。アセットフォルダに新しいスタイルシートを追加すると、次のエラーが発生します。

CSSアセットのコンパイル中にエラーが発生しました

Sprockets :: NotImplementedError:カスタムasset_pathヘルパーが実装されていません

カスタムメソッドを使用して環境コンテキストを拡張します。

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

私は何が間違っているのですか?

4

4 に答える 4

2

私はエラーメッセージの提案に従いました:私はasset_pathメソッドを定義しましたconfig.ru

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

なぜこれが必要なのかはまだわかりませんが、エラーはなくなりました。

于 2012-10-05T16:03:28.040 に答える
1

Padrinoで同じエラーを修正するために、このメソッドを my で定義し、次のようapp.rbに変更environmentしましたassets

assets.context_class.class_eval do
  def asset_path(path, options = {})
    "/assets/#{path}"
  end
end
于 2014-03-17T11:57:11.173 に答える
0

すでに提案されていますがasset_path、環境に合わせてメソッドを定義する必要があります。

このメソッドは、CSS ファイルで一般的に使用されるimage_url などのヘルパーによって使用されます。その時によって少し違うものにしたいかもしれませんoptions[:type]

例:

environment.context_class.class_eval do
  def asset_path(path, options = {})
    if type = options[:type]
      "/assets/#{type.to_s.pluralize}/#{path}"
    else
      "/assets/#{path}"
    end
  end
end

そうすることで、ヘルパーが戻っasset_urlてくる/assets/path/to/your/file間にミルを作るimage_url/assets/images/path/to/your/file

于 2014-04-20T09:43:05.963 に答える