Reputation: 4032
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
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
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
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