1

在我看来,我将一组哈希值保存在隐藏字段中

    <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 个哈希)的原始形式,问题的一半是:值。我不希望它被存储,我不知道如何解析它来获取数组。基本上我想要

[{"a"=>nil, "b"=>nil, "c"=>0]
4

1 回答 1

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}]}
于 2013-07-01T17:47:45.760 回答