Если @result
является массивом экземпляров модели ActiveRecord, то render :json => @result
выдаст что-то похожее на то, что вам нужно, но будет включать все атрибуты модели (render
вызывает to_json
для объекта, который вы передаете если это не строка).
Чтобы включить только атрибуты id и name, вы можете использовать параметр :only
, равный to_json
:
respond_to do |format|
format.json { render :json => @result.to_json(:only => [:id, :name] }
end
Кроме того, вы можете создать массив объектов Hash, которые содержат только обязательные атрибуты:
respond_to do |format|
format.json { render :json =>
@result.collect {|o| {:id => o.id, :name => o.name} } }
end
Редактировать: См. Комментарий @ dt ниже. В модели есть атрибут с именем text, который необходимо вывести в виде имени. Это можно сделать, создав псевдоним для текста в модели:
class Model < ActiveRecord::Base
alias_method :name, :text
и включая имя, используя :methods
:
respond_to do |format|
format.json { render :json => @result.to_json(:only => :id, :methods => :name }
end
Кроме того, для переименования атрибута можно использовать подход с массивом хэшей:
respond_to do |format|
format.json { render :json =>
@result.collect {|o| {:id => o.id, :name => o.text} } }
end