webster
webster

Reputation: 4032

Converting ruby array to javascript array not working properly

I am trying to convert a ruby array to javascript array in my rails application

@qs #=> [1, 4]

The javascript code is:

var js_array =  [<%= @qs.to_json %>];
var arrayLength = js_array.length;
for (var i = 0; i < arrayLength; i++) {
    alert(js_array[i]);
}

But I am getting the arrayLength as 1. The alert message in the loop display 1,4 once.

I have tried converting the array to string array, but there is no difference:

var new_array = js_array.map(String);

What I need: I should be able to loop through the javascript array and alert each element.

Upvotes: 2

Views: 1099

Answers (3)

Zoker
Zoker

Reputation: 3969

Just pass the @qs array to js_array when using Haml template language

var js_array = #{@qs} ;

Code in views:

:javascript
  var js_array =  #{@qs};
  var arrayLength = js_array.length;
  for (var i = 0; i < arrayLength; i++) {
    alert(js_array[i]);
  }

@qs = [1,2] in controller.

Upvotes: 0

osman
osman

Reputation: 2459

This works for me...

<script type="text/javascript">
var js_array = <%= @arr %>
var arrayLength = js_array.length;
for (var i = 0; i < arrayLength; i++) {
    alert(js_array[i]);
}
</script>

In my controller

@arr = [1,2,3]

Upvotes: -1

spickermann
spickermann

Reputation: 107142

The to_json method returns a string that includes the array brackets. Therefore this should work:

var js_array =  <%= @qs.to_json %>;

Upvotes: 3

Related Questions