【问题标题】:Conversion of a javascript object to a ruby hash将 javascript 对象转换为 ruby​​ 哈希
【发布时间】:2017-04-04 20:12:55
【问题描述】:

在我现有的 ruby​​ on rails 应用程序中,我的一个视图文件中有一个 JavaScript 对象(哈希)。在表单提交期间需要将哈希值提交回控制器。我已经使用 JSON.stringify(hash_name) 方法将哈希转换为 JSON。但它会产生一个字符串,我可以在我的控制器中获得看起来像哈希的字符串。我的目的不是那样。我需要取消引用控制器中的哈希,以便可以将取消引用的值保存到数据库中。

当我在控制器中打印时,我的哈希如下所示:

{"Bearing":[["Jeekay",0],["Ecodrive",0]],"Civil":[["Nirlon",0],["SKF",0]],"Compressor":[["Jeekay",0],["Ecodrive",0],["SKF",0]]} 

它应该是这样的,而不是字符串。

我的视图中有一个隐藏字段。我将散列放入隐藏字段的值并将表单提交为

$("#javascript_data").val(JSON.stringify(ultimate_hash));

在我的控制器中,我得到的数据是:

check_data=params[:javascript_data]

但是 check_data 是一个字符串。

但由于它是一个字符串,我的目的没有解决。请就如何将 JavaScript 哈希按原样传递给控制器​​提供一些建议来帮助我。

提前致谢!

【问题讨论】:

    标签: javascript ruby-on-rails json ruby hash


    【解决方案1】:

    您需要解析 JSON 以获取哈希。这里:

    str = '{"Bearing":[["Jeekay",0],["Ecodrive",0]],"Civil":[["Nirlon",0],["SKF",0]],"Compressor":[["Jeekay",0],["Ecodrive",0],["SKF",0]]}'
    JSON.parse str
    # => {"Bearing"=>[["Jeekay", 0], ["Ecodrive", 0]], "Civil"=>[["Nirlon", 0], ["SKF", 0]], "Compressor"=>[["Jeekay", 0], ["Ecodrive", 0], ["SKF", 0]]}
    

    或根据您的示例,简单地说:

    check_data = JSON.parse(params[:javascript_data])
    

    【讨论】:

    • JSON::parse?在 Ruby 中调用方法不是很传统的方法;)
    • @AndreyDeineko 编辑为更好的传统方式:)
    猜你喜欢
    • 1970-01-01
    • 2011-06-29
    • 1970-01-01
    • 2020-09-15
    • 2011-03-12
    • 1970-01-01
    • 2015-01-04
    • 1970-01-01
    • 2011-03-13
    相关资源
    最近更新 更多