Ruby on rails 为什么我会得到;“没有路线匹配”;对于资产管道的请求?
我正在升级一个应用程序以使用Rails 3.1,我正在尝试使用资产管道。作为测试,我将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
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的兼容性