2014-02-14 7 views
3

Каков самый простой или короткий способ ответа в контроллере API. В настоящее время следующие работы:Шаблон рендеринга Rails со статусом

respond_to do |format| 
    format.json { render 'client', status: :ok } 
end 

однако этот контроллер будет только когда-либо реагировать на JSON (respond_to: JSON), чтобы весь respond_to сделать | формат | вещь кажется ненужным кодом.

В идеале я хотел бы сделать что-то простое, как:

render 'client', status: :ok 

Update: Я забыл упомянуть, что: «клиент» является шаблоном JBuilder, который не соответствует моему имя действия.

+0

Лучшим способом было бы использовать response_with: http://apidock.com/rails/ActionController/MimeResponds/respond_with –

+0

Как использовать response_with в примере выше? – TrevTheDev

ответ

4

Вы можете использовать визуализации непосредственно

render json: 'client', status: :ok 
+0

Я должен был быть более ясным: клиент - это шаблон jbuilder, который я хочу отобразить. решение, которое вы предлагаете, вернет json string 'client' – TrevTheDev

3

Согласно @hassasin, вы можете указать свой контроллер формата render json: на каждом действии контроллера.

Другой вариант - воспользоваться вашим config.routes.rb, чтобы установить весь формат ответа вашего контроллера, например. contacts_controller:

resources :contacts, defaults: {format: :json} 

Если вы хотите, чтобы указать status, добавьте в свои действия:

def index 
    render status: :ok # 200, 400, 500, what ever you want 
end 

Я тестировал код выше с Rails 3.2.16

Я надеюсь, что это помогает.

1

Поскольку вы используете json (предполагается, что вы используете jbuilder), вам не нужен этот оператор визуализации, если ваше имя действия соответствует имени представления.

+0

Спасибо, Стив, к сожалению, мое имя не может соответствовать моему действию. – TrevTheDev

+0

затем просто сделайте рендер. это все. нет необходимости указывать формат. –

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