2012-11-14 40 views
0

我有一些代碼,添加到會話陣列像這樣增加了紅寶石陣列時,固定可怕格式:從PARAMS

if policy_session[:modalities] #array exists just add new value to it 
    policy_session[:modalities] << [params[:modality], policy_session[:mode_list]] 
else #the array does't exist yet, so create and add first one. 
    policy_session[:modalities] = [params[:modality], policy_session[:mode_list]] 

但這會產生對我:modalities陣列可怕的格式。它看起來像這樣:

>> policy_session[:modalities] 
>># [["var_1"], "1",[["var_2"], ["2"]], [["var_3"], ["1"]]] 

這是一個總的痛苦,試圖在我的程序中重複使用。

我已經嘗試了一堆不同的東西,但還沒有拿出任何看起來比這更好的東西。

如何創建數組然後添加到數組中以使輸出可讀?和所有格式一樣!

我想是這樣的:

>>policy_session[:modalities] 
>># [["var_1", "1"], ["var_2", "2"], ["var_3", "1"]] 

回答

1

事情是這樣的......

policy_session[:modalities] ||= [] # set it to an empty array if nil 
policy_session[:modalities] << [params[:modality], policy_session[:mode_list]] 

編輯:爲了擺脫多餘的[]的的...

policy_session[:modalities] ||= [] # set it to an empty array if nil 
policy_session[:modalities] << [params[:modality], policy_session[:mode_list]].flatten 
+0

這是關閉它產生這種格式:'[[[var_1「],」1「],[[」var_2「],」1「],[[」var_3「],」1「]]]。無論如何,擺脫我的''var _#「''附近的額外括號? – Ryan

+0

是的。查看編輯。 –

+0

感謝像魅力一樣工作,紅寶石數組有點奇怪來自與JavaScript數組的工作。 – Ryan