Javascript 将Rails结果散列为数组对象JSON

Javascript 将Rails结果散列为数组对象JSON,javascript,ruby-on-rails,json,angularjs,Javascript,Ruby On Rails,Json,Angularjs,我有这样一个rails查询 @c = RealEstateAgentAssignmentStatus.joins(:real_estate_agent_assignments =>:loan_application) .group("real_estate_agent_assignment_statuses.assignment_status").select("real_estate_agent_assignment_statuses.assignment_status,coun

我有这样一个rails查询

@c = RealEstateAgentAssignmentStatus.joins(:real_estate_agent_assignments =>:loan_application)
    .group("real_estate_agent_assignment_statuses.assignment_status").select("real_estate_agent_assignment_statuses.assignment_status,count(real_estate_assignments.loan_application_id)")
    .where("real_estate_agent_assignments.real_estate_agent_id = 188").count
data["Submitted]
data.status , data.value 
好的,我有一个json格式的rails结果,如下所示

@c = RealEstateAgentAssignmentStatus.joins(:real_estate_agent_assignments =>:loan_application)
    .group("real_estate_agent_assignment_statuses.assignment_status").select("real_estate_agent_assignment_statuses.assignment_status,count(real_estate_assignments.loan_application_id)")
    .where("real_estate_agent_assignments.real_estate_agent_id = 188").count
data["Submitted]
data.status , data.value 
变量数据={
“被客户/银行拒绝”:1, “筛选失败”:2, “已提交”:2, “处理阶段”:3 }

它是json格式的,因为我必须将它传递给angularJS并在那里使用它

现在我只能这样称呼它

@c = RealEstateAgentAssignmentStatus.joins(:real_estate_agent_assignments =>:loan_application)
    .group("real_estate_agent_assignment_statuses.assignment_status").select("real_estate_agent_assignment_statuses.assignment_status,count(real_estate_assignments.loan_application_id)")
    .where("real_estate_agent_assignments.real_estate_agent_id = 188").count
data["Submitted]
data.status , data.value 
我如何在rails中散列我的结果,或者将结果放入一个数组,这样我就可以这样调用它了

@c = RealEstateAgentAssignmentStatus.joins(:real_estate_agent_assignments =>:loan_application)
    .group("real_estate_agent_assignment_statuses.assignment_status").select("real_estate_agent_assignment_statuses.assignment_status,count(real_estate_assignments.loan_application_id)")
    .where("real_estate_agent_assignments.real_estate_agent_id = 188").count
data["Submitted]
data.status , data.value 
我想在rails中映射它,但它给了我一个错误

感谢您的帮助。 感谢Ruby中的

: 在Javascript中: 导轨

使用

或者您可以定义散列类中缺少的自己的方法。但这不是一个好主意

def method_missing(m)
  key = m.to_s
  return self[key] if self.has_key? key
  super
end
在我的所有情况下,您都需要使用键
status
value
进行散列。要转换哈希,请执行以下操作:

new_hash = h.map{ |key, value| OpenStruct.new({status: key, value: value }) }
或者不使用OpenStruct:

new_hash = h.map{ |key, value| {status: key, value: value } }
在此之后,您可以使用:

new_hash[i].status
new_hash[i].value
JavaScript

在js中,将哈希转换为对象数组。对于angular.js:

var data = [];
angular.forEach(your_json, function(k,v){ 
  this.push({ status: k, value: v }) 
}, data); 
希望您理解正确,并对您有所帮助