До сих пор я всегда указывал формат ответа для действий с помощью responds_to блока, как так:
responds_to do |format|
format.js { render :json => @record }
end
Недавно я понял, что, если Вы только поддерживаете один формат (как в вышеупомянутом примере), Вам действительно не нужен тот блок. Это - лучшая практика, чтобы оставить его внутри или удалить его?
Я собираюсь отличаться с существующими ответами - мне нравится иметь blacks_to
блок для всех моих действий. Я обнаруживаю, что в то время как немного более многословным, он более четко документирует действие. Это также позволяет легко поддерживать дополнительные форматы в будущем. Редактировать: Другое преимущество - это действует как привратник. Любой формат, не объявленный в блоке, автоматически обслуживается «406 не приемлемым»
Я не совсем уверен, что это лучшая практика или нет, но обычно то, что мне нравится делать, это оставить маршруты, открытые для ответа_то (т. Е. Применение .: Формат
До конца), но используйте его только в контроллерах, когда это необходимо.
Пример:
Маршруты.rb
map.connect :controller/:action/:id.:format
Model_Controller.rb
# Return a collection of model objects
def action_with_multiple_responses
@models = Model.all
respond_to do |format|
format.html #=> action_with_multiple_responses.html
format.xml { render :xml => @models }
end
end
# Return the first model object
def action_with_one_response
@model = Model.first
end
Таким образом, вы не загромождаете свой метод Action_With_One_Response
с ненужным блоком, но вы также настроили себя Неплохо, если вы хотите когда-нибудь вернуть свой объект в XML, JSON и т. Д.
Я бы сказал, что не следует использовать функцию respond_to, если только у вас нет нескольких типов ответа.
Это просто дополнительный код для понимания и обработки вашего приложения:
render :json => @record
намного лаконичнее, чем:
responds_to do |format|
format.js { render :json => @record }
end