2012-03-31 2 views
3

В одном из моих контроллеров, у меня есть этот код:получения «ActionView :: MissingTemplate» при рендеринге с простым JSON ответа голов

respond_to do |format| 
    format.html{ redirect_to :me, :flash => {:error => t('quest_histories.misc.bad_request')}} and return 
    format.json{ head :method_not_allowed } and return 
end 

Но, когда приходит запрос JSON, я получаю эту ошибку:

ActionView::MissingTemplate (Missing template quest_histories/index, application/index with {:locale=>[:en], :formats=>[:json], :handlers=>[:erb, :builder, :coffee]}. Searched in: 
* "/var/www/PMAC_RoR/app/views" 

Это действительно смущает меня, потому что у меня есть аналогичный код во многих других контроллерах, и он фактически работает ... контроллер просто должен отвечать заголовком html, ему не нужен шаблон.

ответ

4

Вместо "и возвращения" удалить те, и поставить возвращение после всего respond_to блока.

+0

уже сделал, но забыл написать ответ здесь. В любом случае, спасибо. – qwertoyo

2

Попробуйте добавить это:

render :nothing => true 
+0

вместо "head: method_not_allowed"? – qwertoyo

+0

как "{render: nothing => true,: status =>: method_not_allowed}" – sadfuzzy

+1

'render nothing: true, status:: method_not_allowed' совпадает с' head: method_not_allowed' (голова просто более явная), поэтому не будет иметь значения. – Dennis

0
respond_to do |format| 
    format.html{ redirect_to :me, :flash => {:error => t('quest_histories.misc.bad_request')}} and return 
    format.json { render :nothing => :true, :status => :no_content } 
end 
+1

не то же самое, что и «head: no_content»? – qwertoyo

+0

Я не знаю, но вы можете проверить http://api.rubyonrails.org/classes/ActionController/Head.html#method--head –

+0

btw, я получаю ту же ошибку – qwertoyo

Смежные вопросы