【问题标题】:Sprockets asset_path error on SinatraSinatra 上的 Sprocketsasset_path 错误
【发布时间】:2015-08-03 13:08:09
【问题描述】:

我正在开发一个使用 Sprockets 的 Sinatra 项目。当我在资产文件夹中添加新样式表时,我收到此错误:

编译 CSS 资源时出错

Sprockets::NotImplementedError: 自定义asset_path 助手不是 实施

使用自定义方法扩展您的环境上下文。

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

我做错了什么?

【问题讨论】:

    标签: sinatra sprockets


    【解决方案1】:

    我按照错误信息的建议:我在config.ru中定义了asset_path方法:

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

    我仍然不确定为什么需要这样做,但它使错误消失了。

    【讨论】:

      【解决方案2】:

      为了修复 Padrino 中的相同错误,我在 app.rb 中定义了此方法,并将 environment 更改为 assets

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

      【讨论】:

        【解决方案3】:

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

        这个方法被CSS文件中常用的helpers like 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

        【讨论】:

          【解决方案4】:

          我们不需要 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
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2011-02-25
            • 2014-07-10
            • 1970-01-01
            • 2014-12-01
            • 1970-01-01
            • 1970-01-01
            • 2015-06-07
            相关资源
            最近更新 更多