Reputation: 42863
I need to get a ruby array in to a javascript array and I'm getting a parse error.
var characters = <%= @poop.to_json %>;
That is how I'm embedding ruby into inline javascript and it's coming up with a parse error. How should I be getting this ruby array into javascript?
I'm embedding this into an .html.erb file so ruby should be getting to the variable before javascript.
This is what safari console is showing:
I had a form that had three fields js, css, and html respectively so I would put my javascript in a form and then it would put it into the header.
<head>
<%= @game.javascript %>
</head>
So as you can see I was embedding ruby in javascript that was the output of a ruby object so the reason ruby wasn't getting to it first was that it had already got to it and treated the <%= %> just like another string.
Ahh, I up voted you all for the help. Thanks!
Upvotes: 0
Views: 1416
Reputation: 1856
Ideally, we need more information to properly answer, but I'm going to guess some stuff to help you...
Assumption #1: You are using erb syntax (those "<%=" and "%>") in a .js file. These aren't parsed by Rails into anything meaningful.
What you want to do, is use inline JS in your template or view. Javascript generation from other languages can be tricky though, use with caution.
Upvotes: 2
Reputation: 70889
You're treating a .js file like an .erb file - it's not. JavaScript files aren't parsed by Ruby - anything in public
is sent as-is.
One way to get @poop
into your JavaScript is to have a Rails action that renders json, then load that with XHR.
Alternatively, you could output @poop
in the HTML template in a <script>
tag, then load the contents of that script tag from your JavaScript.
Upvotes: 4