Rails没有正确解码jQuery中的哈希数组

时间:2013-07-01 17:28:57

标签: ruby-on-rails ajax decode

在我看来,我在隐藏字段中保存了一系列哈希

    <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]

1 个答案:

答案 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}]}