Преобразуйте это в Ruby 1.9 Hash - PullRequest
0 голосов
/ 18 февраля 2012

У меня есть следующее в старом синтаксисе:

render json: [@note.to_json(:include => { :contact => { :except => [:created_at, :updated_at]}}, only: :body)], status: :created, location: [@contact, @note]

Как бы я это сделал в новом синтаксисе 1.9 хеша? Я пробовал много разных способов, но не могу понять синтаксис. С другой стороны, я нахожу это довольно запутанным.

Редактировать: На самом деле понял, что я уже смешиваю это с вызовом json :. Ба! Ненавижу ходить между двумя.

Ответы [ 2 ]

3 голосов
/ 18 февраля 2012

Я не уверен, в чем проблема, но она довольно просто конвертируется в это:

render json: [@note.to_json(include: { contact: { except: [:created_at, :updated_at]}}, only: :body)], status: :created, location: [@contact, @note]

Кроме того, объединение множества вложенных структур в одной строке может привести к путанице.Разбейте его так, чтобы оно было читабельным (и записываемым).

0 голосов
/ 18 февраля 2012

Ваш пример работает отлично. Нужно всего лишь поменять еще несколько клавиш

require 'pp'
pp json: [
    {
      include: { 
        contact: { 
          except: [:created_at, :updated_at]
        }
      },
      only: :body
    }
  ], 
  status: :created, 
  location: %w[contact note]

Таким образом, кроме некоторых небольших изменений, связанных с объектами, к которым у меня нет доступа (@contact и @note), единственными, которые я изменил, были

:include => { :contact => { :except =>

до

include: { contact: { except:

Также вы можете использовать rabl для такого рода вещей.

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