2017-02-17 21 views
0

У меня есть метод импорта CSV, который отображает страницу подтверждения/предварительного просмотра импортируемых данных, и я хочу передать данные из предварительного просмотра в фактический метод импорта.Rails 4: CSV to hash передается как скрытое поле

В предварительном просмотре CSV уже был превращен в хэш строк, и я хочу передать этот хэш методу импорта. Я пытался просто делать:

<%= hidden_field_tag "my_hash", @final %> 

где @final является хэш данных, но он передает хэш в виде строки и в Params, данные выглядят как JSON.

"wi_hash"=>"{ 
    \"name_fail\"=>[{\"scale_id\"=>\"509\", 
    \"name\"=>\"John Doe\", 
    \"date\"=>\"<no data>\", 
    \"current_weight\"=>\"999\", 
    \"bmi\"=>\"999\", 
    \"body_fat\"=>\"999\", 
    \"visceral_fat\"=>\"999\", 
    \"tbw\"=>\"999\", 
    \"muscle_mass\"=>\"999\", 
    \"basal_metabolic_rate\"=>\"999\" 
    .... 
    } 

Как еще я могу передать @final так, что она сохраняет свой хэш-формат?

+0

Что вы подразумеваете под «так, чтобы он поддерживал свой хэш-формат»? Измените свой вопрос, чтобы включить пример того, как вы хотите, чтобы отображаемый HTML выглядел. –

ответ

0

Я нашел этот полезный помощник в другом вопросе:

def hash_to_hidden_fields(hash) 
    query_string = Rack::Utils.build_nested_query(hash) 
    pairs  = query_string.split(Rack::Utils::DEFAULT_SEP) 

    tags = pairs.map do |pair| 
    key, value = pair.split('=', 2).map { |str| Rack::Utils.unescape(str) } 
    hidden_field_tag(key, value) 
    end 

    tags.join("\n").html_safe 
end 

Это позволяет передать Хааса в качестве аргумента.