2014-01-31 2 views
0

у меня есть действие индекса в моем контроллере, который я использую, чтобы сделать все сообщения как JSON:Включить «distance_of_time_in_words» значение в выходе JSON

def index 
    @user = current_user 
    @posts = Post.all 
    end 
    respond_to do |format| 
    format.html 
    format.json { 
     render json: @posts.to_json(:include => { 
     :user => { :only => [:first_name, :last_name]}, 
     :category => { :only => [:name, :id]} 
     }), 
     :callback => params[:callback] 
    } 
    end 
end 

То, что я хотел бы сделать, это добавить дополнительный атрибут выход JSON каждого сообщения под названием posted_on, который имеет значение: distance_of_time_in_words(post.created_at, Time.now)}

Я не могу понять, как подойти к этому. Любая помощь будет оценена!

ответ

0

Добавить метод posted_on в Post модель

class Post < ActiveRecord::Base 
    include ActionView::Helpers::DateHelper 

    def posted_on 
    distance_of_time_in_words(created_at, Time.now) 
    end 
end 

В контроллере, передайте опцию методы для to_json

def index 
    @user = current_user 
    @posts = Post.all 
    end 
    respond_to do |format| 
    format.html 
    format.json { 
     render json: @posts.to_json(:include => { 
     :user => { :only => [:first_name, :last_name]}, 
     :category => { :only => [:name, :id]} 
     }, :methods => :posted_on), 
     :callback => params[:callback] 
    } 
    end 
end 
+0

Это не похоже на выходе значение 'posted_on' в формате JSON , Это не исключение, но добавление кода выше не повлияло на оказанный JSON. Не уверен, что случилось. – cmw

+0

Вы добавили метод 'posted_on' в свою модель' Post'? – usha

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