ActionView :: MissingTemplate:缺少模板

当谷歌机器人试图访问我的一个控制器时,我收到此错误消息。

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 )。

这是回溯。

第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 

访问引发谷歌机器人错误的url不会给我带来错误。

唯一失败的url是包含{"action"=>"show", "id"=>"25-jönköping", "controller"=>"channels"}等特殊字符的url。 ORIGINAL_FULLPATH值设置为/channels/25-j%c3%b6nk%c3%b6ping

我正在使用rails 3.2.1。

这最近在master中修复并后移到3.2分支:请参阅https://github.com/rails/rails/issues/736获取原始错误报告, https://gist.github.com/1754727 for monkey补丁和github.com/rails/rails/pull/4918用于接受拉取请求。

我在Rails 3应用程序上也看到了这个错误,并且已经在同一条船上复制错误。 日志有Missing Template错误,但是当我手动尝试请求时,它工作正常。

我怀疑来自Google的HTTP请求没有设置Rails正确处理的mime。 我找到的原始解决方案是删除视图模板mime,所以

 example/index.html.erb 

就是现在

 example/index.erb 

这将停止Missing Template错误,因为该模板将用于所有mimes。