没有改动之前的代码 controller
def article_sort
shares = Share.order("id desc").limit(300)
@shares = shares.sort{|a,b| b.liked.size <=> a.liked.size }
render :tag
end
tag.json.jbuilder
json.array! @shares do |share|
json.extract! share, :id, :content, :category_id
json.set! :status, true
json.set! :created_at, share.created_at.strftime("%Y/%m/%d at %H:%M %P")
json.set! :username, share.user.username
json.set! :comments_size, share.comments.size
json.set! :like_count, share.liked.size
json.set! :deserve_count, share.deserved.size
end
正常使用没有出现问题 后来因为需求变动,需要添加一个新的 json 字段 shares_pageaction (一个分页 HTML 代码片段)
def article_sort
shares = Share.order("id desc").limit(300)
@shares = shares.sort{|a,b| b.liked.size <=> a.liked.size }
articles_json = render( template: 'shares/tag.json.jbuilder', locals: { users: @shares})
shares_pageaction = render_to_string(:partial => "shares/article_paging")
render :json => { :articles => articles_json, :shares_pageaction => shares_pageaction }
end
tag.json.jbuilder 文件没有变,想要复用这部分代码 问题出在 render tag.json.jbuilder 出来的是 字符串 而不是 json 对象 是不是 render 方法没有用对,需要用到其他方法才能正确 render 出 json 对象。