AbstractController :: DoubleRenderError в рельсах 3 - PullRequest
2 голосов
/ 04 августа 2011

Я всегда получаю следующую ошибку:

AbstractController :: DoubleRenderError (Рендеринг и / или перенаправление были звонил несколько раз в этом действии. Обратите внимание, что вы можете только вызовите render или redirect, и не более одного раза за действие. Также обратите внимание, что ни перенаправление, ни рендеринг не прекращают выполнение действия, поэтому если вы хотите выйти из действия после перенаправления, вам нужно что-то сделать например, "redirect_to (...) и return".):

Ошибка возникает, когда идентификатор равен первому, а не второму ...

def calc_next
  id = next()
  if id.nil?
    id = next_next()
    if id.nil?
      render :layout => false, :format => :js
    else
      redirect_to :action => "view", :id => id, :format => :js
    end
  else
    redirect_to :action => "view", :id => id, :format => :js
  end
end

Я не вижу проблемы в этом перенаправлении, так как внешнее в порядке. Даже с отладчиком нет двух перенаправлений одновременно ...

Любая помощь приветствуется ... Markus

Ответы [ 3 ]

3 голосов
/ 04 августа 2011

Это похоже на какую-то вспомогательную функцию, а не на действие контроллера. В этом случае вы, вероятно, вызываете calc_next дважды в одном действии или render / redirect_to из другого места в том же действии. Помните, что render и redirect_to не немедленно вызывают возврат контроллера.

Проверьте, может ли ваш путь управления одновременно вызывать calc_next и render или redirect_to откуда-то еще (или из второго вызова в calc_next).

Если вы опубликуете действие контроллера, через которое вы проходите, мы сможем помочь вам лучше.

0 голосов
/ 26 октября 2012

У вас также есть два варианта:

перенаправление ... и возврат сделать ... и вернуть

0 голосов
/ 04 августа 2011

Есть ли before_filter s, которые могут выполнять рендеринг или перенаправление?

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