Accept: */*; で MissingTemplateになってしまうのを防ぐ
topページヘのアクセスでたまに変なExceptionが出てたのです。
ActionView::MissingTemplate (Missing template pages/top, application/top with {:locale=>[:ja], :formats=>["*/*;"], :variants=>[], :handlers=>[:erb, :builder, :raw, :ruby, :slim, :coffee, :jbuilder]}. Searched in:
一見何がおかしいのかよくわからなかったですが、
HTTP Headerが Accept: /; で送られるとエラーになり Accept: / とセミコロンがない場合はhtmlのテンプレートが判断されて セミコロンがついてるとMissingTemplateになってしまうようです。
UAをみていると Baidu Browser のようですが、ExceptionがでてSlackなどに通知されてしまうのも何なので
ActionView::MissingTemplate (Missing template mall_front/pages/top, mall_front/application/top with {:locale=>[:ja], :formats=>["/;"], :variants=>[], :handlers=>[:erb, :builder, :raw, :ruby, :slim, :coffee, :jbuilder]}. Searched in:
ApplicationController に以下のように設定すると防げました。
before_atcion :default_request_format def default_request_format request.format = :html if request.format == '*/*;' end
あんまり困っている人がいないのか、ググっててもあまり載ってないですね。