2017-11-03 7 views
1

フロントエンドアプリケーションからフィールドの動的配列を取得して、ワークブックの内容を特定します。 2つのフィールドは同じ値を持ちますが、異なる見出しが必要です。だから私は、私の方法にこれを追加しました:AXLSXのRails Paramsの名前を変更

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]は、2つの同一の文字列の最初のもの。

問題は、私の.eachループ内で、params[:fields]が今更新されたfields変数と同じ内容になっていることです。私は.dupを使ってみましたが、それは私のparamsを変更していないままでした。私は、次の手順を実行して、この問題を回避することができています:異なる列ヘッダーを印刷のために私のparamsを複製するクリーンな方法がある場合は、私が興味

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

。前もって感謝します!

答えて

0

これを試してみてください:

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

'paramsは[:フィールド]は、' 'あなたが上.to_h'呼び出すことはできません単純な配列です。私は 'フィールド'をハッシュに変えることがこれをスリムにするのかどうかはわかりません。 –

+0

paramsは、_ActionController :: Parameters_のインスタンスです。assign _fields = params [:fields] _この割り当ては参照で、_object_id_はそのままのため、すべてのオブジェクトにobject_idがあるため、paramsをハッシュオブジェクトは完全に異なっているので、あなたは_parameters = params.to_h_と_fields = parameters [:fields] _のようなことをすることができます_上記の私の提案を編集しました – TolerantX

関連する問題