Как я могу определить, отдало ли действие диспетчера (а не перенаправило?)

performed? прибыль метода true в диспетчере, если применение перенаправило или отдало.

Как я могу определить, отдало ли применение (а не перенаправленный)?

Оценка от performed? доктора, я могу посмотреть на @performed_render, но это кажется hacky.

Править: Почему я хочу сделать это?

Я пытаюсь припрятать продукцию про запас действия диспетчера только в случае, что это приводит к отдаванию (и не перенаправление). Вот код, который я использую теперь: (на основе отданный припрятавшего про запас)

  def render_with_cache(options = {})
    key = ([request.request_uri, request.format] | (options.delete(:key_additions) || [])).join("::")
    body = Rails.cache.read(key)

    if body
      render :text => body
    else
      yield if block_given?
      render unless performed?
      if @performed_render
        Rails.cache.write(key, response.body, options) # :expires_in
      end
    end
  end

12
задан Tom Lehman 24 January 2010 в 22:25
поделиться

2 ответа

посмотрите @Performed_Render . :) Вы не объясняете Почему Вам нужно обнаружить это, поэтому я не могу предложить альтернативные решения.

5
ответ дан 2 December 2019 в 04:16
поделиться

В after-фильтре проверьте коды статуса ответа .

MyController < ActionController
  after_filter :check_response

  # define your actions that render or redirect

  protected

  def check_response
    # put real app logic here
    puts :rendered! if response.status == "200 OK" 
    puts :redirected! if response.status == "302 Found" 

  end
end
5
ответ дан 2 December 2019 в 04:16
поделиться
Другие вопросы по тегам:

Похожие вопросы: