当谷歌机器人试图访问我的某个控制器时,我收到此错误消息。
ActionView::MissingTemplate: Missing template channels/show, application/show with {:locale=>[:"sv-SE", :en], :formats=>["*/*;q=0.9"], :handlers=>[:erb, :builder, :haml]}. Searched in: * "/opt/www/app/releases/20120228181534/app/views" * "/opt/www/app/shared/bundle/ruby/1.9.1/gems/kaminari-0.13.0/app/views"
问题在于我无法重现它。 错误发生在上周的121次(根据airbrake)。
Here是回溯。
第18行,这是我的应用中唯一提到的行,是此代码的super
部分
def render(options = {}, extra_options = {}, &block)
if request.headers['X-PJAX'] or params[:no_layout] == "true" or params[:_pjax]
options[:layout] = false
end
super(options, extra_options, &block)
end
控制器方法channels#show
看起来像这样
def show
@channel = # ...
@today = # ...
@yesterday = # ...
@tomorrow = # ...
end
访问引发谷歌机器人错误的网址不会给我带来错误。
唯一失败的网址是包含{"action"=>"show", "id"=>"25-jönköping", "controller"=>"channels"}
等特殊字符的网址。 ORIGINAL_FULLPATH
值设置为/channels/25-j%c3%b6nk%c3%b6ping
。
我正在使用rails 3.2.1。
答案 0 :(得分:3)
最近已在master中修复并反向移植到3.2分支: 有关原始错误报告,请参阅https://github.com/rails/rails/issues/736,有关猴子补丁的信息,请参阅https://gist.github.com/1754727;有关已接受的请求,请参阅github.com/rails/rails/pull/4918。
答案 1 :(得分:2)
我在Rails 3应用程序上也看到了这个错误,并且已经在同一条船上复制错误了。日志中有Missing Template错误,但是当我手动尝试请求时,它可以正常工作。
我怀疑来自Google的HTTP请求没有设置Rails正确处理的mime。我找到的原始解决方案是删除视图模板mime,所以
example/index.html.erb
现在是
example/index.erb
这会停止Missing Template错误,因为该模板将用于所有mime。