0

In my existing ruby on rails application, I have a JavaScript object (hash) in one of my view file. The hash needs to be submitted back to the controller during form submission. I have converted the hash to JSON using JSON.stringify(hash_name) method. But it produces a string and I can get the string which looks like the hash in my controller. My purpose was not that. I need to dereference the hash in controller , so that I can save the dereferenced values into database.

My hash looks like as following when I am printing it in controller:

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

And it should be like it but not the string.

I have a hidden field in my view. I am putting the hash to the value of the hidden field and submitting the form as

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

In my controller I am getting the data as:

check_data=params[:javascript_data]

But check_data is a string.

But since its a string,my purpose was not solved. Please help me by giving some suggestions about how to pass the JavaScript hash to the controller as it is.

Thanks in advance!

1 Answer 1

2

You need to parse JSON to get hash. Here:

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

or as per your example, simply:

check_data = JSON.parse(params[:javascript_data])
Sign up to request clarification or add additional context in comments.

2 Comments

JSON::parse? Not very conventional way to call a method in Ruby ;)
@AndreyDeineko edited to a better conventional way :)

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.