Ruby on Rails' response_to вызывает странную ошибку

Есть еще одно respond_to для обычного случая и особого случая, когда param[:top] передается, так что есть другой respond_to ранее в коде:

      respond_to do |format|
        format.html { render :top_page_analytics }
        format.json { render :json => @analytics }
        format.xml { render :xml => @analytics }
        return
      end

но приведенный выше код на самом деле выдал странную ошибку за отсутствующий шаблон для json, и дальнейшая отладка привела к:

      respond_to do |format|
        format.html { render :top_page_analytics }
        format.json { render :json => @analytics }
        format.xml { render :xml => @analytics }
      end
      return

который исправляет ошибку. Возврат необходим для того, чтобы не было "двойной ошибки рендеринга", потому что программа перетекла в другой respond_to, Но мне интересно, странный синтаксис respond_toВ некотором роде похожий на case, может ли это вызвать ошибку наверху?

1 ответ

Возвращение не может пойти туда, потому что вы передаете блок. Блок не выполняется в непосредственном контексте действия контроллера. Когда вы возвращаетесь из блока, вы на самом деле возвращаетесь из функции, возвращающей (response_to), а не из действия контроллера.

Другие вопросы по тегам