Rails渲染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
?
您可以在Pakke
单行方法执行此Pakke
:
def as_json(*args) super.tap { |hash| hash["name"] = hash.delete "navn" } end
调用super
将像往常一样生成json哈希,然后在它返回之前你将突然进入并更改“navn”条目的键。
重写as_json方法。 它由to_json
使用以产生输出。 你可以这样做:
def as_json options={} { name: navn, .... # other attributes you want to add to json } end