Ruby on rails 为什么我会得到;“没有路线匹配”;对于资产管道的请求?

Ruby on rails 为什么我会得到;“没有路线匹配”;对于资产管道的请求?,ruby-on-rails,ruby-on-rails-3.1,asset-pipeline,Ruby On Rails,Ruby On Rails 3.1,Asset Pipeline,我正在升级一个应用程序以使用Rails 3.1,我正在尝试使用资产管道。作为测试,我将foobar.js添加到app/assets/javascripts 设置 在application.rb中,我添加了config.assets.enabled=true。说下去,我想这就是我要做的 检查一下 如果我加载控制台并选中Rails.application.config.assets.paths,我会在加载路径中看到app/assets/javascripts。另外,如果我选中MyAppName::A

我正在升级一个应用程序以使用Rails 3.1,我正在尝试使用资产管道。作为测试,我将
foobar.js
添加到
app/assets/javascripts

设置 在
application.rb
中,我添加了
config.assets.enabled=true
。说下去,我想这就是我要做的

检查一下 如果我加载控制台并选中
Rails.application.config.assets.paths
,我会在加载路径中看到
app/assets/javascripts
。另外,如果我选中
MyAppName::Application.assets
,我会返回一个路径相同的
Sprockets::Environment
对象

我觉得这一切都很好

尝试使用它 在视图中,我使用的是
javascript\u include\u标记('foobar')
。输出以下HTML:

错误 在该链接之后,我遇到了一个错误:
没有与[GET]匹配的路由“/javascripts/foobar.js”

我是否缺少一个设置?


杂项详情 我目前正在使用:

  • ruby-1.9.2-p290
  • 轨道-3.1.0.rc6
  • 链轮-2.0.0.beta.14(轨道所需)

我仍然必须手动将文件添加到管道中(请参阅)


我想这是因为Rails 3.1仍处于测试阶段

我仍然需要手动将文件添加到管道中(请参阅)。我想这是因为Rails 3.1仍在使用中beta@apneadiving-进步!这样做确实会加载foobar.js。接下来,我尝试加载一个清单文件,其中包含
/=require
语句。该文件未经处理即发送到浏览器;
require
语句只是作为注释处理,而不是处理指定的文件。想法?嗯,我不知道:它对我很有效:@apheading-我的愚蠢错误。:)我的清单文件中有一个点,比如
MyRailsEngine.manifest.js
。我认为这使得Rails/Sprocket尝试将其作为
清单
文件进行处理,但它不知道如何处理。不确定为什么它没有抛出错误,但无论如何,将其更改为
MyRailsEngine manifest.js
效果很好。@apreading-因此,基本上,您的第一条评论解决了我的问题。想把它添加为一个答案,这样我就可以接受它了?嘿,我想我们实际上做错了。你的技巧对我很有用,但我在
public/javascripts/
中有我的
application.js
,我们将它添加到初始值设定项的加载路径中。当我将文件移动到
app/assets/javascripts/
时,我不再需要初始值设定项,因为
app/assets/javascripts/
已经在加载路径上。好的,谢谢:)事实上,我将所有内容都保存在
public/javascripts
中以保持Rails 3.0.x的兼容性