Rails如何在渲染json时更改属性名称?

Rai*_*ner 6 ruby ruby-on-rails ruby-on-rails-3

在我的控制器中我有:

@pakkes = Pakke.where("navn like ?", "%#{params[:q]}%")

respond_to do |format|
  format.html # index.html.erb
  format.xml  { render :xml => @pakkes }
  format.json { render :json => @pakkes.map(&:attributes) }
end
Run Code Online (Sandbox Code Playgroud)

如何改变属性navnname渲染JSON是什么时候?

Rob*_*vis 12

您可以使用单行方法执行此操作Pakke:

def as_json(*args)
    super.tap { |hash| hash["name"] = hash.delete "navn" }
end
Run Code Online (Sandbox Code Playgroud)

调用super将像往常一样生成json哈希,然后在它返回之前,你将突然进入并更​​改"navn"条目的键.