2016-11-21 91 views
0

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

我的哈希看起来像当我在打印控制器中以下内容:

{"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哈希传递给控制器​​的建议来帮助我。

在此先感谢!

回答

2

你需要解析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]) 
+0

'JSON :: parse'?不是很常规的方式来调用Ruby中的方法;) –

+0

@AndreyDeineko编辑为更好的常规方式:) – shivam

+0

@ shivam ,,非常感谢bro!......它的工作正常。 – Abhradip