rails:javascript_include_tag呈现错误的路径

时间:2011-10-26 15:42:01

标签: ruby-on-rails

我正在尝试将嵌套表单放入我的一个视图中。我已经安装了nested_form Gem并执行了安装步骤。我做的最后一件事是编辑我的app / view / layouts / application.html.erb文件以包含这一行

<%= javascript_include_tag "nested_form" %>

但是当我查看渲染页面时,javascript无效。我检查了页面源代码,发现nested_form javascript的呈现代码如下所示:

<script src="/assets/nested_form.js" type="text/javascript"></script>

所以它看起来似乎在错误的地方。该.js文件位于public / javascripts中,而不是资产中。我做错了什么或者我是否需要在javascript_include_tag中指定其他内容?

1 个答案:

答案 0 :(得分:6)

从rails 3.1及以后,javascript_include_tag只会查看资产管道中的javascripts。如果要将公共/ javascripts添加到资产管道中,只需将公共路径添加到

即可
Rails.application.config.assets.paths
初始化RoR应用程序时的

数组,因为它定义了资产管道查看的路径。

所以没有你没有做错任何事情,你使用的宝石只是过时的而且它是用于rails 3.0-。虽然我建议尝试将javascripts从公共文件夹移动到assets文件夹,看看它是否有效,因为这是将javascripts放在3.1应用程序中的首选方法。

另一种解决问题的方法,虽然不推荐,但是如果您不使用它,则完全禁用资产管道。这是通过删除

来完成的
config.assets.enabled = true
在config / application.rb中

如果您想了解有关资产管道的更多信息,Railscasts上会有一个视频 http://railscasts.com/episodes/279-understanding-the-asset-pipeline