Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Rails在呈现json时如何更改属性名?_Ruby On Rails_Ruby_Ruby On Rails 3 - Fatal编程技术网

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版本冲突的受保护属性非常方便……既不删除我的列,也不在哈希中添加一个。虽然它看起来很好,但不起作用。