2015-07-27 1 views
1

Предположим, у вас есть модель под названием Widget, которая включает в себя :id и :name.Как добавить элемент/поле/столбец при рендеринге JSON в Rails?

В конечной точке индекса Widget # вы хотите отобразить все виджеты в json, однако ... вы также хотите включить другое значение для каждой записи, которая не является отдельной моделью, называемой foobar. Таким образом, вы хотите, чтобы конечный результат, чтобы выглядеть следующим образом ...

{ 
    "widgets": [ 
     { 
      "id":, 1, 
      "name": "widgy", 
      "foobar": true 
     }, 
     { 
      "id":, 2, 
      "name": "gadgy", 
      "foobar": false 
     } 
    ] 
} 

Как вы можете изменить следующий код, чтобы что-то вроде этого?

widgets = Widget.all 
render json: widgets 

ответ

0

В зависимости от версии Rails выполнявшимися, вы можете выбрать, чтобы использовать active_model_serializers или простой jbuilder вид.

Rails 4 уже включает в себя драгоценный камень jbuilder, поэтому вам не нужно включать ничего особенного в ваш Gemfile.

Cheers!

+0

Я использую AMS в своем приложении. У меня нет встроенного jbuilder, поскольку я на Rails 3. Знаете ли вы, есть ли простой способ сделать это только через код? Если нет, как я могу получить к нему доступ из своего сериализатора AMS. Проблема в том, что у меня нет параметра user_id в моем сериализаторе Walkthru, который мне нужен для доступа к таблице WalkthruComplete. –

+0

Это сообщение SO передаёт аргументы вашему сериализатору: http://stackoverflow.com/questions/23347587/how-to-pass-parameters-to-activemodel-serializer –

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