Ruby on rails Rails在呈现json时如何更改属性名?
在我的控制器中,我有:Ruby on rails Rails在呈现json时如何更改属性名?,ruby-on-rails,ruby,ruby-on-rails-3,Ruby On Rails,Ruby,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 在呈现JSON时,如何
@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
在呈现JSON时,如何将属性navn
更改为name
重写该方法。使用它来生成输出。您可以执行以下操作:
def as_json options={}
{
name: navn,
.... # other attributes you want to add to json
}
end
您可以使用Pakke
中的一行方法执行此操作:
def as_json(*args)
super.tap { |hash| hash["name"] = hash.delete "navn" }
end
调用super
将像往常一样生成json哈希,然后在返回之前,您将突入并更改“navn”项的键。这是一个优雅而超级酷的解决方案!非常感谢:)非常好的解决方案,对于那些与旧IE版本冲突的受保护属性非常方便……既不删除我的列,也不在哈希中添加一个。虽然它看起来很好,但不起作用。