Rails, как изменить имя атрибута при рендеринге JSON? - PullRequest
6 голосов
/ 21 января 2012

В моем контроллере у меня есть:

@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

Как изменить атрибут navn на name при рендеринге JSON?

Ответы [ 2 ]

12 голосов
/ 21 января 2012

Вы можете сделать это однострочным методом в Pakke:

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

При вызове super будет сгенерирован json-хэш, как обычно, затем, прежде чем он будет возвращен, вы подключитесь и измените ключ записи "navn".

3 голосов
/ 21 января 2012

Переопределить метод as_json .Используется to_json для получения результата.Вы можете сделать что-то вроде:

def as_json options={}
 {
   name: navn,
   .... # other attributes you want to add to json
 }
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...