неправильное представление - PullRequest
0 голосов
/ 24 февраля 2011

Существует простой код:

def new
  if !logged_in?
    respond_to do |format|
      format.js {render "new_failed"}
      return
    end
  end

  article = Article.find params[:id]
  @comment = article.comments.build

  respond_to do |format|
    format.js
  end
end

Когда пользователь не вошел в систему, «new_failed» должен быть обработан, но, фактически, «новое» действие отображается.

Когдая положил logged_in?в конец метода:

def new
  if !logged_in?
    respond_to do |format|
      format.js {render "new_failed"}
      return
    end
  end

  article = Article.find params[:id]
  @comment = article.comments.build

  respond_to do |format|
    format.html # new.html.erb
    format.js
  end
end

Он работает правильно.

Что за странное поведение?Кто-нибудь может это объяснить?

Спасибо.

1 Ответ

1 голос
/ 24 февраля 2011

Проблема в возврате внутри response_to.Если вы делаете это так, это работает (здесь).

if !logged_in?
  respond_to do |format|
    format.js {render "new_failed"}
  end
  return
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...