2016-11-21 16 views
0

私の既存のRuby on Railsアプリケーションでは、私のビューファイルの1つにJavaScriptオブジェクト(ハッシュ)があります。フォームの提出中にハッシュをコントローラに戻す必要があります。 JSON.stringify(hash_name)メソッドを使用して、ハッシュをJSONに変換しました。しかし、それは文字列を生成し、私はコントローラのハッシュのように見える文字列を得ることができます。私の目的はそうではありませんでした。逆参照された値をデータベースに保存できるように、コントローラのハッシュを逆参照する必要があります。javascriptオブジェクトからrubyハッシュへの変換

私のハッシュは以下のようになります、私はコントローラにそれを印刷していたときに、次のように:文字列を

{"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 ,,ありがとう! – Abhradip

関連する問題