выполнить рендеринг из метода контроллера приложения - PullRequest
1 голос
/ 25 августа 2010

Мне нужно выполнить проверки версий API, и поэтому я реализовал проверку в своем методе контроллера, например:

if request.header["api_version"] != 1
  respond_to do |format|
    format.json {render :json => expiredMessage}
  end
  return
end

Работает нормально, я возвращаюсь в операторе управления, поэтому Rails не жалуетсяо двойном рендере.Я попытался высушить их в методе контроллера приложения как before_filter, но затем я получил жалобу на рендеринг нескольких рендеров.Кажется, что область видоизменения изменилась так, что 'return' в операторе управления больше не возвращается из исходного метода контроллера?

Мне интересно, как я могу сделать рендеринг из метода контроллера приложения, или есть ли лучший способ, как я могу реализовать эту функцию?Спасибо!

1 Ответ

3 голосов
/ 25 августа 2010

A перед тем, как фильтр вызывается перед каждым действием контроллера, возврат из него просто позволяет этому действию продолжаться.Я бы использовал исключения.(следующий код не проверен)

class FrontEndController < ApplicationController
  rescue_from Exception do |exception|
    if exception.is_a? ExpiredException
      respond_to do |format|
        format.json {render :json => expiredMessage}
        return
      end
    end
  end

  before_filter :check_api_version
  def check_api_version
    raise ExpiredException if request.header["api_version"] != 1
  end
end

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