0

我有一个带有 Slidedeck jquery 插件的站点。当我在本地提供它时,它工作得很好,看起来很棒。但是,在我将它推送到 Heroku 之后,它根本不起作用。

我正在使用 sprockets 包含我的所有文件,并且我还使用了一个处理主题的 gem (themes_for_rails)。我在配置中有一个初始化程序:

 ThemesForRails.config do |config|
  # themes_dir is used to allow ThemesForRails to list available themes. It is not used to resolve any paths or routes.
  config.themes_dir = ":root/app/assets/themes"

  # assets_dir is the path to your theme assets.
  config.assets_dir = ":root/app/assets/themes/halo"

  # views_dir is the path to your theme views
  config.views_dir =  ":root/app/views/themes/halo"

  # themes_routes_dir is the asset pipeline route base. 
  # Because of the way the asset pipeline resolves paths, you do
  # not need to include the 'themes' folder in your route dir.
  #
  # for example, to get application.css for the default theme, 
  # your URL route should be : /assets/default/stylesheets/application.css
  config.themes_routes_dir = "assets"
end

这是在我的 application.js 中:

//= require jquery
//= require jquery_ujs
//= require_tree .
//= require_tree ../themes/halo/javascripts

也许我的问题是我在 Heroku 中使用相对路径。不过,我不确切知道如何做绝对路径。

4

1 回答 1

1

我以前没有使用过 Slidedeck 库,但这里有一些事情可以用来缩小你的错误来源:

  • Javascript 出错。在 Heroku 上的应用程序中加载控制台。基本的 Javascript 工作吗?如果不是,那么可能是某些错误正在吞噬您的错误——我以前见过这种情况,但我无法找到究竟是什么原因造成的。

  • Slidedeck加载实际上存在问题吗?如果它被包装在一个类中(就像 jQuery 是如何被包装在 jQuery 类中的),你能在控制台中引用那个类吗?

  • Heroku 上的相对路径应该没问题……但我注意到这一行:

    //= require_tree ../themes/halo/javascripts

    你需要相当于app/assets/themes/halo/javascripts. 是对的吗?为什么不使用javascripts文件夹?如果您在此文件夹中也有 css 和图像,您可以将它们拆分到各自的app/assets/子文件夹中,以确保。(我的队友告诉我这不是或不应该是必要的,但我发现它在一两次情况下对我有帮助)。

  • 是否有任何与资产预编译失败相关的控制台错误推送到 Heroku?他们有一个专门的页面来解决这个错误。

于 2012-07-03T20:04:02.040 回答