Фильтр рендеринга json в Rails - PullRequest
17 голосов
/ 22 марта 2011

Как лучше всего, если я хочу вернуть только поля: id и: name в JSON

Пока у меня есть:

format.json { render :json => @contacts.map(&:attributes) , :only => ["id"]}

Но атрибут "name" не работает в разделе: only, поскольку он не является столбцом в базе данных (он определен в модели как имя + фамилия)

Спасибо!

Ответы [ 2 ]

33 голосов
/ 22 июля 2012

Rails 3 поддерживает следующие параметры фильтра. так просто, как

respond_to do |format|
  format.json { render json: @contacts, :only => [:id, :name] }
end  
28 голосов
/ 22 марта 2011

Вы можете передать :methods to_json / as_json

format.json do
  render :json => @contacts.map { |contact| contact.as_json(:only => :id, :methods => :name) }
end

В качестве альтернативы вы можете просто создать хеш вручную

format.json do
  render :json => @contacts.map { |contact| {:id => contact.id, :name => contact.name} }
end

См .: http://api.rubyonrails.org/classes/ActiveModel/Serializers/JSON.html#method-i-as_json

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...