2014-01-31 42 views
0

我在我的控制器中的索引操作,我用它來渲染所有帖子爲JSON:包含在JSON輸出「distance_of_time_in_words」值

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

您是否已將'post_on'方法添加到您的'Post'模型中? – usha