此表爲tbl_notification
。讓說,我想產生JSON輸出是這樣的: -Rails 4 - 以單一形式在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只有2個主要對象(:trigger_event [ONE] & [TWO])。 ONE有3個散列,而TWO有5個散列。
對於數據庫方面,即時通訊使用PostgreSQL和列調用message_notification
這是JSONB數據格式類型。
上面的JSON輸出在message_notification
列下。
控制器(剛拔出JSON部分)
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
型號(剛拔出JSON部分)
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"]
]
查看(剛拔出JSON部分)
<%= 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
如果:trigger_event
是select_tag
,以上代碼正在工作。
所以,現在,我想從select_tag
行爲改變爲check_box
爲:trigger_event
,這樣的事情(例如):
<%= f.input :trigger_event['ONE'], as: :boolean, label: 'ONE' %>
<br/>
<%= f.input :trigger_event['TWO'], as: :boolean, label: 'TWO' %>
的原因是,我想要和/或形式是,用戶可以檢查現場形式ONE或檢查現場形式TWO或同時檢查現場形式ONE & TWO。
- 所以如果勾選ONE,
:trigger_event, :message & :ptc {:id}
將會保存。 - 如果檢查TWO,
:trigger_event, :message, :ptc {:id}, :remind_interval & :document {:id}
將保存。 - 如果同時檢查(ONE & TWO),會產生類似於上面的JSON輸出。
如何實現這一目標?
感謝您的解釋.. – AmirolAhmad