Ruby on Rails ответит на странную ошибку - PullRequest
0 голосов
/ 17 сентября 2010

Существует другой 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 Ответ

1 голос
/ 17 сентября 2010

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

...