2012-04-18 2 views
0

У меня есть list_controller в моем приложении rails вместе с листинговой моделью. db состоит из списков, каждый из которых имеет имя, широту, долготу и т. Д.Rails метод рендеринга JSON

объект JSON должен получить свои данные из соответствующей модели листингов. Однако я хочу, чтобы объект JSON содержал только имя, широту, долготу каждого листинга, а не другие атрибуты модели. Как я могу это ограничить?

Прямо сейчас, когда метод возвращает объект JSON, он включает в себя все атрибуты каждого листинга.

Вот текущая реализация:

def list 
@listings = Listing.order(:name) 
render :text=>(@listings).to_json() 

конец

ответ

1

Как насчет замены:

@listings = Listing.order(:name) 

с:

@listings = Listing.order(:name).select([:name, :latitude, :longitude]) 
+0

Это сработало. Благодарю. – banditKing

0

Я рекомендую смотреть на rabl камень. Это система шаблонов для легкой и гибкой генерации json (между прочим).

Существует также бесплатный railscast.

0

Вы можете проверить драгоценный камень active_model_serializers.

Если вы не хотите, чтобы все, что вы могли бы просто вручную создать хэш:

render :text => {name: @listing.name, lat:@listing.lat, long:@listing.long}.to_json 
+0

Это Didn К сожалению. – banditKing

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