2017-11-03 61 views
1

我從我的前端應用程序中獲取動態數組字段,以確定我的工作簿將具有哪些內容。其中兩個字段具有相同的值,但我需要不同的列標題。所以,我已經加入這個我的方法:重命名AXLSX的Rails參數

fields = params[:fields] 
    fields[0].replace('new string') 
    sheet.add_row fields 
    exportees.each do |event_session_registration| 
     row_array = params[:fields].map { |field| event_session_registration.try(field) } 
     row_array.map! { |value| value == true ? 'Yes' : value } 
     row_array.map! { |value| value == false ? 'No' : value } 
     sheet.add_row row_array 
    end 

Fields[0]是第一個兩個相同的字符串。

現在的問題是,在我的.each循環內,params[:fields]現在與我更新的fields變量具有相同的內容。我嘗試過使用.dup,但是這並沒有讓我的參數保持不變。我可以做來解決這個問題如下:

fields = params[:fields] 
    fields[0].replace('new string') 
    sheet.add_row fields 
    fields[0].replace('original string') 

不過,我很好奇,如果有重複我的params用於在打印不同的列標題的緣故一個更清潔的方式。提前致謝!

回答

0

試試這個:

parameters = params.to_h 
fields = parameters[:fields] 
+0

'PARAMS [:字段]'只是一個簡單的數組,你不能叫'.to_h'上。我不確定將'fields'變成散列可以減少這個問題。 –

+0

params是_ActionController :: Parameters_的一個實例,因爲所有的對象都有一個object_id,如果你賦值_fields = params [:fields] _這個賦值是通過引用的,而且_object_id_仍然是相同的,所以,當你將params轉換爲哈希對象是完全不同的,所以你可以做一些像_parameters = params.to_h_和_fields = parameters [:fields] _我編輯我的建議上面 – TolerantX