Ruby on rails Rails 4-在JSON对象中以单一形式保存多个值和/或
此表是Ruby on rails Rails 4-在JSON对象中以单一形式保存多个值和/或,ruby-on-rails,arrays,json,ruby,ruby-on-rails-4,Ruby On Rails,Arrays,Json,Ruby,Ruby On Rails 4,此表是tbl\u通知。比如说,我想生成一个JSON输出,如下所示:- [ { "trigger_event":"ONE", "ptc": { "id":"184" }, "message":"this is message" }, { "trigger_event":"TWO", "ptc": { "id":"184" }, "message":"sasasd", "rem
tbl\u通知
。比如说,我想生成一个JSON输出,如下所示:-
[
{
"trigger_event":"ONE",
"ptc":
{
"id":"184"
},
"message":"this is message"
},
{
"trigger_event":"TWO",
"ptc":
{
"id":"184"
},
"message":"sasasd",
"remind_interval":"60",
"document":
{
"id":""
}
}
]
因此,这个JSON中只有两个主要对象(:trigger_event[ONE]&[TWO])。一个有3个散列,而两个有5个散列
对于db端,im使用PostgreSQL和列调用message\u notification
,这是JSONB数据格式类型
上面的JSON输出位于message\u notification
列下
控制器(只需拉出json部分)
模型(只需拉出json部分)
查看(只需拉出json部分)
原因是,我想制作和/或表单,即用户可以检查字段表单一或字段表单二,或检查字段表单一和字段表单二
:trigger_event,:message&:ptc{:id}
将保存:触发器事件,:消息,:ptc{:id},:提醒间隔&:document{:id}
将保存如何做到这一点?我真的不明白你觉得这个场景有什么复杂之处 鉴于这些复选框没有什么特别之处,请使用HTML:
然后在控制器中,您只需检查已选中的复选框,并生成相应的JSON:
def创建
触发事件=[]
如果参数[:trigger_events][:one]='1'
触发事件
def create
@geofence.message_notification = {
trigger_event: params[:ng_geofence][:trigger_event],
ptc: params[:ng_geofence][:ptc],
message: params[:ng_geofence][:message],
remind_interval: params[:ng_geofence][:remind_interval],
document: params[:ng_geofence][:document]
}.to_json
end
def as_hash(format=:google)
{
trigger_event: trigger_event,
ptc: { id: ptc },
message: message,
remind_interval: remind_interval,
document: { id: document },
}
end
TRIGGER_EVENTS = [
["ONE","ONE"],
["TWO","TWO"]
]
<%= f.select :trigger_event, Ng::Geofence::TRIGGER_EVENTS, { prompt: "-- Choose" } %>
<%= f.input :ptc, collection: @pretrips, wrapper: false, label: false, selected: (x['ptc']['id'] unless f.object.new_record?), :include_blank => true %>
<%= f.input :message, as: :string, label: false, wrapper: false %>
etc
<%= f.input :trigger_event['ONE'], as: :boolean, label: 'ONE' %>
<br/>
<%= f.input :trigger_event['TWO'], as: :boolean, label: 'TWO' %>
<input type="checkbox" name="trigger_events[one]" value="1">
<input type="checkbox" name="trigger_events[two]" value="1">