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(’
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. note especially how in the first
one at line 19, the ‘@’ of ‘@raw.each’ is white instead of blue, which
is wrong for an instance variable.
I also tested in the rails console that the erb indeed returns values
within range, so that shouldnt be a problem, either.
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.
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!
This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.