在我看来,我在隐藏字段中保存了一系列哈希
<div>
<%= hidden_field_tag :data_filtered, :value => @data_filtered %>
</div>
我的javascript是
$(document).ready(function(){
freezeTopRow($('#dataTable'));
$("#export").click(function(){
var data1 = $("#data_filtered").val()
$.ajax({
type: "POST",
url: "export",
dataType: 'json',
data: {data_filtered: data1}
});
});
});
我的控制器是
def export
CSV.open("data.csv", "wb") do |csv|
csv << params[:data_filtered].first.keys
@data_filtered.each do |hash|
csv << hash.values
end
end
end
当我将params [:data_filtered]返回到控制器后,我看到一个字符串:
"{:value=>[{"a"=>nil, "b"=>nil, "c"=>0}]}"
但是我希望它的原始形式是(哈希数组,在这种情况下只有1个哈希),问题的一半是:value。我不希望存储它,我不知道如何解析它只是为了获得数组。基本上我想要
[{"a"=>nil, "b"=>nil, "c"=>0]
答案 0 :(得分:1)
尝试发送json数据而不是字符串(包含哈希)。如果你通过ajax发送字符串然后在控制器中你必须eval
具有严重安全问题的参数。
使用eval
:(请不要使用它)
eval('{:value=>[{"a"=>nil, "b"=>nil, "c"=>0}]}') will produce the original hash: {:value=>[{"a"=>nil, "b"=>nil, "c"=>0}]}