在我的公共控制器中,我有:
def index
@super = "test"
respond_to do |format|
format.html
format.js
end
end
我已经为视图/公用文件夹中的索引操作创建了一个index.js.erb
。
但是当我访问http://localhost:3000/.js
我得到No route matches [GET] "/.js"
这以前在旧版本的轨道上已经有效...
这是一年前在这里提出的非常确切的问题。提问者得出结论,我引用
好的,所以,我已经决定这可能是 Rails 团队故意阻止像"/.atom"这样的 URL 的事情(因为真的,这看起来像应该发生的事情吗?),所以我现在使用第二条路由(获取"latest",:action => :index)作为格式 URL(所以,比如"/latest.atom")。
从问题来看,这似乎是在 3.0 和 3.1 之间发生的事情。
作为临时解决方案,我仍然需要深入,从routes.rb
中删除root
并添加此get "/(.:format)" instead, to: "public#index"
.这应该有效。
编辑
是的,它可能与此提交有关。
API 特别指出,root
使用match
将/
添加到路由列表中。 root
以斜杠结尾,所以...连接点。提交说路由没有格式以 /
结尾。
我确实从actionpack/lib/action_dispatch/routing/mapper.rb
中删除了添加(|| path.end_with?('/')
),root
现在可以有格式了。
若要确保不会中断对root_path帮助程序的所有调用,请替换路由:
root :to => 'public#index'
跟:
get '/(.:format)' => 'public#index', :as => :root