Rails的3.2.10'.js.erb模板没有路由匹配

时间:2013-01-24 16:35:34

标签: ruby-on-rails ruby-on-rails-3

在我的公共控制人中,我有:

  def index
    @super =  "test"
     respond_to do |format|
      format.html
      format.js
    end
  end

我在views / public文件夹中为索引操作创建了index.js.erb

但是当我访问http://localhost:3000/.js

我得到No route matches [GET] "/.js"

以前在旧版本的导轨上工作...

2 个答案:

答案 0 :(得分:2)

一年前在这里问过{p> This, the very exact, question。提问者来conclusion,我引用

  

好吧,所以,我已经决定这可能是Rails团队故意阻止像“/.atom”这样的网址(因为真的,这看起来应该发生什么?),所以我是现在使用格式URL的第二个路径(获取“latest”,:action =>:index)(所以,比如“/latest.atom”)。

从问题来看,似乎发生在3.0和3.1之间的事情。

作为临时解决方案,我仍然需要深入了解,从root移除routes.rb并添加此get "/(.:format)" instead, to: "public#index"。这应该有用。

修改

是的,它可能与此commit有关。

root match使用/root添加到路由列表中的API says/以斜线结尾,所以...连接点。提交说明没有以|| path.end_with?('/')结尾的路由格式。

我确实删除了actionpack/lib/action_dispatch/routing/mapper.rb中的添加内容(root),{{1}}现在可以使用格式。

答案 1 :(得分:0)

要确保不中断对root_path帮助程序的所有调用,请替换路由:

root :to => 'public#index'

使用:

get '/(.:format)' => 'public#index', :as => :root