ActionView :: MissingTemplate Ошибка, только при посещении ботом? - PullRequest
15 голосов
/ 10 мая 2011

У меня есть действие, которое обслуживает мою домашнюю страницу.Он работает нормально при обычном посещении (т. Е. Пользователем в веб-браузере), но при посещении определенными веб-сканерами выдает следующую ошибку:

 A ActionView::MissingTemplate occurred in tags#promoted:

 Missing template tags/promoted with {:handlers=>[:erb, :rjs, :builder, :rhtml, :rxml], :formats=>["text/*"], :locale=>[:en, :en]} in view paths "/Apps/accounts/app/views", "/usr/local/rvm/gems/ruby-1.9.2-p180@accounts/gems/devise-1.3.0/app/views"
 actionpack (3.0.4) lib/action_view/paths.rb:15:in `find'

Похоже, что боты пытаются получить *Формат 1004 *, для которого нет шаблона, имеет смысл, поэтому я попытался сделать следующее в своем действии:

  def promoted
   request.format = :html #force html to avoid causing missing template errors
   # more action stuff....
  end

По сути, я пытаюсь заставить формат запроса html, чтобы онслужит для шаблона html.

Тем не менее каждый раз, когда эти наборы ботов запрашивают эту страницу, возникает ошибка отсутствующего шаблона.

Это не так уж сложно, но в идеале я бы хотел решить этуошибка, если только так, я перестаю получать эти сообщения об ошибках из моего приложения.

Является ли единственный способ создать файл с именем my_action.text.erb и добавить в него какую-то тарабарщину?Или я могу решить это более элегантно?

Ответы [ 2 ]

7 голосов
/ 17 сентября 2011

Я тоже это видел.Вы могли бы использовать какое-то промежуточное программное обеспечение для переписывания этих запросов:

class Bot
  def initialize(app)
    @app = app
  end

  def call(env)
    h = env["HTTP_ACCEPT"]
    env["HTTP_ACCEPT"] = "text/html" if h == "text/*"
    @app.call(env)
  end
end

Я раздобыл драгоценный камень за то, что убил несколько запросов на обнаружение MS Office, и, казалось, имеет смысл добавить в него это промежуточное ПО.*https://github.com/jwigal/rack-options-request

0 голосов
/ 10 мая 2011

Оказывается, этот конкретный набор ботов так же глуп, как камень, и игнорирует любые виды форматирования запросов, как я пытался это сделать.Я закончил тем, что запретил агентам пользователя этих ботов в моем robots.txt.Нет больше ошибок.Однако, если у кого-то есть более элегантное решение, пожалуйста, опубликуйте его, и я отмечу его как принятый ответ, иначе я приму его через пару дней.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...