javascript with embedded ruby

Hi folks!

Im currently trying to generate diagrams with a js lib and rails. It doesn't work, though, since I can't figure out how to embed ruby code to supply the diagrams with data. My editor highlights the ruby code weirdly, too, with I take as a hint for wrong ruby syntax. The diagrams work if I use the pure-js sample data, but it REALLY dont want to input data sets with 200 items by hand.

The snippet in question is this one, it lives in an .html.erb file:

var hour = [     <% @raw.each do |raw| %>     [ <%= if raw.status == "aufgewacht" %>         <%= Time.parse(raw.timestamp).wday.to_json %>,         <%= raw.timestamp[15,2].to_json %>       <% end %> ],     <% end %>   ]; (yeah, pretty ugly)

Some error messages; line 20 contains the "if"-conditional .../app/views/processed_data/_scatter.html.erb:20: syntax error, unexpected ')', expecting keyword_then or ';' or '\n' ...nd= ( if raw.status == "woke" );@output_buffer.safe_concat('

app/views/processed_data/_scatter.html.erb:23: syntax error, unexpected keyword_end, expecting ')' ...ffer.safe_concat(' '); end ;@output_buffer.safe_concat(...

Does anyone know how to do this?

Hi Rynn,

Hi folks!

Im currently trying to generate diagrams with a js lib and rails. It

doesn’t work, though, since I can’t figure out how to embed ruby code to

supply the diagrams with data. My editor highlights the ruby code

weirdly,

too, with I take as a hint for wrong ruby syntax.

The diagrams work if I use the pure-js sample data, but it REALLY dont

want to input data sets with 200 items by hand.

The snippet in question is this one, it lives in an .html.erb file:

var hour = [

<% @raw.each do |raw| %>

[ <%= if raw.status == "aufgewacht" %>

It seems that your problem is here. You don’t want to output the if condition so you should actually have:

<% if raw.status == “aufgewacht” %>

Marco Antonio Almeida wrote in post #1183823:

Hi Rynn,

The snippet in question is this one, it lives in an .html.erb file:

var hour = [     <% @raw.each do |raw| %>     [ <%= if raw.status == "aufgewacht" %>

It seems that your problem is here. You don't want to output the if condition so you should actually have:

<% if raw.status == "aufgewacht" %>

Thank you! That does indeed get rid of the error messages. I wonder how i missed this. However, the code still doesnt work - there is no data displayed.

Maybe the syntax highlighting makes it a bit clearer. Compare the two attached snippets, one with the js/erb code (with a working var hour below it, to demontrate that the js is (probably) not the problem, and some reguler embedded ruby without js.

Attachments: http://www.ruby-forum.com/attachment/11367/Auswahl_004.jpg http://www.ruby-forum.com/attachment/11368/Auswahl_006.jpg

Marco Antonio Almeida wrote in post #1183823:

Hi Rynn,

The snippet in question is this one, it lives in an .html.erb file:

var hour = [    <% @raw.each do |raw| %>    [ <%= if raw.status == "aufgewacht" %>

It seems that your problem is here. You don't want to output the if condition so you should actually have:

<% if raw.status == "aufgewacht" %>

Thank you! That does indeed get rid of the error messages. I wonder how i missed this. However, the code still doesnt work - there is no data displayed.

Maybe the syntax highlighting makes it a bit clearer. Compare the two attached snippets, one with the js/erb code (with a working var hour below it, to demontrate that the js is (probably) not the problem, and some reguler embedded ruby without js.

Attachments: http://www.ruby-forum.com/attachment/11367/Auswahl_004.jpg http://www.ruby-forum.com/attachment/11368/Auswahl_006.jpg

You may be getting tripped up by the fact that raw() is a view helper method, and you are using it within your block as a local variable. Try a different word, and see if that makes any difference.

Walter

Walter Davis wrote in post #1183825:

var hour = [

i missed this.

You may be getting tripped up by the fact that raw() is a view helper method, and you are using it within your block as a local variable. Try a different word, and see if that makes any difference.

Walter

Thanks for your input!

Unfortunately it didnt solve my problem, but I finally figured it out:

I had a newline character appended to my status variable, so raw.status could never equal "aufgewacht". It does, though, with raw.status.chomp!