Предположим, вы находитесь в своем контроллере пользователей и хотите получить ответ json для запроса на показ, было бы неплохо, если бы вы могли создать файл в вашем views / users / dir с именем show.json и после вашего users # show действие завершено, он отображает файл.
В настоящее время вам нужно сделать что-то вроде:
def show
@user = User.find( params[:id] )
respond_to do |format|
format.html
format.json{
render :json => @user.to_json
}
end
end
Но было бы неплохо, если бы вы могли просто создать файл show.json, который автоматически обрабатывается так:
def show
@user = User.find( params[:id] )
respond_to do |format|
format.html
format.json
end
end
Это спасло бы меня от горя и избавило бы от ужасно грязного чувства, которое я испытываю, когда рендерил свой JSON в контроллере
. Вы должны быть в состоянии сделать что-то вроде этого в вашем ende_to
Block:
respond_to do |format|
format.json
render :partial => "users/show.json"
end
, который сделает шаблон в приложении / представлениях / пользователях / _show. json.erb
.
Попробуйте добавить вид Пользователи / Show.json.erb
Это должно быть отображено, когда вы делаете запрос на формат JSON, и вы получаете дополнительное преимущество оказанные erb тоже, поэтому ваш файл может выглядеть что-то вроде этого
{
"first_name": "<%= @user.first_name.to_json %>",
"last_name": "<%= @user.last_name.to_json %>"
}
Просто добавьте show.json.erb
файл с содержимым
<%= @user.to_json %>
Иногда бывает полезно, когда нужны дополнительные вспомогательные методы, недоступные в контроллере, например, image_path(@user. avatar)
или что-то для генерации дополнительных свойств в JSON:
<%= @user.attributes.merge(:avatar => image_path(@user.avatar)).to_json %>