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并更改environmentassets

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

已经提出,你需要asset_path为你的环境定义方法。

此方法由诸如 image_url 之类的助手使用,... CSS 文件中常用。根据当时的情况,您可能希望使其有所不同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 回答
0

我们不需要 sprockets 调用的实例吗?对于我正在使用的 Rails 应用程序,我在 config.ru 中使用了它来消除错误。

map '/assets' do
  environment = Sprockets::Environment.new
  environment.context_class.class_eval do
    def asset_path(path, options = {})
      "app/assets/#{path}"
    end
  end

  environment.append_path 'app/assets/javascripts'
  environment.append_path 'app/assets/stylesheets'
  run environment
end
于 2015-08-03T05:08:09.260 回答