1

行为:

Rails 应用程序可以很好地提供所有资产,除了 dynatree 插件的资产,即我的树没有文件夹图标、线条等。Firebug 在引用资产时报告 404 错误:

NetworkError: 404 Not Found - http://<production-host>/assets/dynatree/skin/icons-bf773ee37964ed4c51011537fefa5047.gif

我已经验证了该目录中确实存在具有该预编译名称的资产。

因为我使用多个虚拟主机,我认为资产的 URL 应该包括应用程序目录名称,即:

http://<production-host>/*houston*/assets/dynatree/skin/icons-bf...

(我自己的星号表示强调。)

我已经通过在 assets 子目录中点击类似 jqueryui 图像的 URL 来验证这一点。如果我在 URL 中包含应用程序名称,则可以找到该图像。没有它,我会得到 404 错误,这很有意义。

那么为什么 dynatree 不使用资产目录的完整路径名呢?它只是将主机名与 /assets 连接起来。我认为 jquery/dynatree 代码在初始化期间没有得到正确的主机名。有任何想法吗?

设置:

通过 Apache/Passenger 设置多个主机:

<VirtualHost *:80>
    ServerAdmin webmaster@localhost

    DocumentRoot /var/webapps
    <Directory /var/webapps>
            AllowOverride None
    </Directory>


    RailsEnv production

    RackBaseURI /houston
    <Directory /var/webapps/houston>
      Options -MultiViews +FollowSymLinks
      Allow from all
    </Directory>

导轨/Capistrano:

这是一个 Rails 3.1 应用程序,使用 Capistrano 部署,资产通过以下方式构建

load 'deploy/assets' (in deploy.rb)

对 config.assets.prefix 等的默认 Rails 设置没有任何更改。

动力树:

通过 dynatree-rails gem 包含在内。Dynatree 在其他方面功能齐全。

4

0 回答 0