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), а не из действия контроллера.