我有一个json结构,我需要根据客户端提供的url参数进行构建。目前我一直在使用Jbuilder.encode
构建json结构,但它变得非常毛茸茸。
self.query = Jbuilder.encode do |json|
json.query do
json.filtered do
json.filter do
json.bool do
if(search_term && username)
json.array!(should) do
........
如何构建ruby对象,以便根据它们的初始化方式将它们转换为json?
下面是我想要在ruby模型/ poros(普通的旧红宝石对象)中捕获的完整json结构。
{
"query": {
"filtered": {
"filter": {
"bool": {
"should": [
{
"query": {
"query_string": {
"query": "tablet",
"fields": [
"standard_analyzed_name",
"standard_analyzed_message"
]
}
}
},
{
"term": {
"username": "feedmatic"
}
}
],
"must": [
{
"terms": {
"status_type": [
"3",
"4"
]
}
},
{
"range": {
"created_on": {
"gte": 20140712,
"lte": 1405134711
}
}
}
]
}
}
}
}
}
答案 0 :(得分:0)
嗯,我不太确定Poro的,但我看到的一件事是,当结构开始变得毛茸茸时,就是制作一个返回你想要显示的哈希表示的方法。您是否尝试过创建一个返回带有该结构的哈希的查询方法,然后在jbuilder模板中调用它? 有一个.attributes方法用于rails返回带有属性的哈希,但你必须研究如何将它与PORO一起使用,以及它是否适用于此目的。