формат json с рельсов на sproutcore

Для тех из вас, кто использует Rails в качестве серверной части для своих клиентов Sproutcore, какой из них лучше всего подходит для форматирования данных в json?

Из руководств Sproutcore был такой подход:

 def as_json(options = {})
   event_hash = {
     "guid" => self.id,
     "id" => self.id,
     "designation" => self.designation,
     "category" => self.category,
     "scheduled_for" => self.scheduled_for,
     "location" => self.location,
     "groups" => self.groups,
     "resources" => self.resources
   }

   event_hash
 end

Но это не удается, отправьте «Недопустимая ошибка оператора». Затем я перешел на этот другой метод:

 def as_json(options = {})
   # event_hash = options.merge(:include => [:groups, :resources], :methods => :guid)
   event_hash = options.merge(:methods => :guid)
   super(event_hash)
 end

который, кажется, работает в том, что касается форматирования, хотя я подозреваю, что это вызывает некоторые проблемы с представлением в dataHash хранилища. В любом случае, у кого-нибудь были подобные проблемы с первой версией as_json? Если нет, есть ли что-то, что я делаю неправильно?

Ценю любую помощь


person joque    schedule 02.06.2011    source источник


Ответы (1)


В первом методе вам нужно вызвать super:

def as_json(options = {})
  event_hash = {
    "guid" => self.id,
    "id" => self.id,
    "designation" => self.designation,
    "category" => self.category,
    "scheduled_for" => self.scheduled_for,
    "location" => self.location,
    "groups" => self.groups,
    "resources" => self.resources
  }

  super(event_hash)
end

Однако вы должны получить параметры и процесс, чтобы сделать это правильно.

person decay    schedule 02.06.2011
comment
Этот вызов super() является самой большой разницей между двумя исходными списками плакатов, поэтому я думаю, что это правильный путь. - person pjmorse; 02.06.2011
comment
не могли бы вы подробнее рассказать об обработке параметров параметров? Я добавил вызов в super, и он работает без исключения. Однако я получаю только одну запись, отправленную в sproutcore. Есть ли что-то, что мне не хватает? - person joque; 03.06.2011
comment
Вы должны использовать options, который вы используете в качестве параметра, и объединить, например, с параметрами по умолчанию. - person decay; 10.06.2011