внутренние методы для атрибутов в response_with - PullRequest
0 голосов
/ 27 марта 2012

Я отображаю сериализованный ответ JSON со следующим кодом:

respond_with(@posts, :only => [:id, :content, :created_at], 
        :include => { :user => { :only => [:id, :name] }, 
                      :comments => { :only => [:content, :created_at] }})

ответ анализируется в коде JAVA, поэтому я хочу преобразовать значение созданного значения в формат, который я могу использовать. Как запустить метод для каждого значения созданного значения (даже, например, .to_i)?

Ответы [ 2 ]

1 голос
/ 27 марта 2012

Я бы сделал это, определив новый метод внутри модели комментариев, например

class Comment < ActiveRecode::Base
  ...
  def created_at_to_i
     created_at.to_i
  end 
  ...
end

и при рендеринге

respond_with(@posts, :only => [:id, :content, :created_at], 
        :include => { :user => { :only => [:id, :name] }, 
                      :comments => { :only => [:content, :created_at_to_i] }})
0 голосов
/ 27 марта 2012

Определите метод в каждой модели, например:

def formated_created_at
  self.created_at.strftime(FORMAT_AS_YOU_LIKE)
end 

Во время рендеринга используйте его как:

response_with (@posts,: only => [: id,: content,: formated_created_at , : include => {: user => {: only => [: id,: name]},: comments => {: only => [: content,: formated_created_at ]}})

РЕДАКТИРОВАНИЕ:

Вместо использования: only в response_with, вы можете создать свой собственный хеш и передать его в response_with. Нравится:

post_hash= { :post => [{:id => 1, :content => "abc", :created_at => self.formated_created_at,:user => {:id => 1, :name => 'Vik' }, :comments => { :content => "comment text", :created_at => self.comment.formated_created_at}] }
respond_with(post_hash)

И я думаю, что вы можете отформатировать созданный_атт во время отображения через javascript, jQuery.

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