나는 내 레일 응용 프로그램에서 다음과 같은 모델이 있습니다 내 컨트롤러에서레일 액티브 레코드 쿼리 및 JSON
class Transaction
belongs_to :category
has_one :group, :through => :category
class Category
belongs_to :group
has_many :transactions
class Group
has_many :categories
has_many :transactions, :through => :category
는 다음과 같습니다 :
@transactions = Transaction.includes(:category, :group).group("groups.id").sum("amount")
respond_to do |format|
format.json{
render :json => JSON.generate(@transactions.as_json(:include => [:category, :group]))
}
end
이 다음 JSON (A)를 생산하고 :
{"1":2000,"3":5000,"2":1000}
그러나 내 목표는 이 (B는) :
[{"group_id":1,"amount":2000},{"group_id":3,"amount":5000},{"group_id":2,"amount":1000}]
은 내가 B에 에서 갈 수있는 방법에 어떤 도움을 크게 감상 할 수있다.
감사합니다. 그러나, 그 다음과 같은 오류가 발생합니다 :'NoMethodError : undefined method 'group_id'for [1, 2000] : Array' – diasks2
당신이 원하는 테이블의 컬럼 이름으로'group_id'를 대체하십시오. –
나는 그것을 바꿀 때 당신의 대답을 얻었다 :'list = value.map do | k, v | {: group_id => k, : 금액 => v } 끝 ' – diasks2