【发布时间】:2015-07-12 00:31:18
【问题描述】:
我已经看到这些错误很长时间了,但没有发现问题:
ActionView::MissingTemplate: Missing template pages/home, application/home with {:locale=>[:en], :formats=>["*/*;"]}
用户代理始终是 MSIE6(这是我之前放弃的部分原因)。
复制:curl -H "Accept: */*;" -I http://localhost:5000
有人知道怎么解决吗?
编辑
curl -H "Accept: */*" -I http://localhost:5000 有效。仅当格式设置为*/*;(注意分号)时才有效。
更新
我尝试按照 cmets 中的建议修改 Mime:ALL,但无法让它同时接受 */* 和 */*;。我看到的一个解决方案是猴子修补在不存在或格式错误的 mime 类型时如何处理请求,但我不确定如何处理。 This answer 提供了一个线索,但我仍然没有。
更多更新
我仍然看到这些错误以及更多错误。一个新的是:formats=>["hc/url;*/*"] (Firefox)。我很惊讶这并没有影响到其他任何人,我认为我的代码中没有任何特定的内容会导致不常见的错误。
【问题讨论】:
-
在
routes.rb中设置root为root "pages#home" -
Rails maps
"*/*" => :all,我不确定如何,但您可能会强制将 :all 视为 :html 请求 -
我所有的路线都正确设置了 Rajarshi。其实这个问题很微妙。
*/*有效,*/*;无效。 -
嗯,我想你可以通过注册一个 mime 类型
Mime::Type.register "*/*;", :all来解决这个问题。或者可能是 Mime::ALL = Mime::Type.new("/", :all, ['/;'])。我认为您需要在初始化程序中执行此操作。 github.com/rails/rails/blob/… -
成功了!重新定义 Mime::ALL 会引发警告,因此寄存器可能是最好的。你应该把它放在一个答案中,我会接受它!
标签: ruby-on-rails internet-explorer format actionview