Rails 3 Select_tag in javascript give missing ; error

24 views
Skip to first unread message

Viral

unread,
Oct 4, 2011, 9:07:09 PM10/4/11
to Ruby on Rails: Talk
When I write

var x = "<%= select_tag(:activity_group,
options_for_select(activity_grp),{:include_blank => 'Create New
Group', :style => 'width: 100px'}) %>";
where <% activity_grp = @activity_group.map { |ag| [ag.name,
ag.id] } %>

However, I get error (missing ; before statement) in Firebug because

var x = "<select id="activity_group" name="activity_group"
style="width: 100px"><option value="">Create New Group</option><option
value="1">Movie</option>
<option value="2">Report</option>";

the code generated takes more than one line without concat the entire
output. I tried html_safe as well it does not works

Can anyone guide me who came across this error before?

Dave Aronson

unread,
Oct 6, 2011, 9:26:19 AM10/6/11
to rubyonra...@googlegroups.com
On Tue, Oct 4, 2011 at 21:07, Viral <p.vi...@gmail.com> wrote:

> var x = "<select id="activity_group" name="activity_group"

The problem is probably that you're using double-quotes inside a
double-quoted string. Not sure if the ERB processing will process
this if you enclose the whole thing in single quotes, which would be
the easiest fix. If that doesn't work (in many contexts, single
quotes are taken as "leave this stuff alone, don't process it in any
way"), try escaping the interior double quotes before actually using
the var's value. (Don't just replace them with single quotes, since
many browsers don't recognize those for attributes.)

-Dave

--
LOOKING FOR WORK, preferably Ruby on Rails, in NoVa/DC; see main web site.
Main Web Site: davearonson.com
Programming Blog: codosaur.us
Excellence Blog: dare2xl.com

Frederick Cheung

unread,
Oct 6, 2011, 10:23:50 AM10/6/11
to Ruby on Rails: Talk


On Oct 6, 2:26 pm, Dave Aronson <googlegroups2d...@davearonson.com>
wrote:
> On Tue, Oct 4, 2011 at 21:07, Viral <p.vira...@gmail.com> wrote:
> > var x = "<select id="activity_group" name="activity_group"
>
> The problem is probably that you're using double-quotes inside a
> double-quoted string.  Not sure if the ERB processing will process
> this if you enclose the whole thing in single quotes, which would be
> the easiest fix.  If that doesn't work (in many contexts, single
> quotes are taken as "leave this stuff alone, don't process it in any
> way"), try escaping the interior double quotes before actually using
> the var's value.  (Don't just replace them with single quotes, since
> many browsers don't recognize those for attributes.)
>

An easy way of doing this is to use to_json, i.e.

var x = <%= select_tag(...).to_json %> since this turns what it is
called on into a json object, which is near a dammit a valid js
literal (apparently there is one of the unicode white space character
which is valid in json but has to be escaped in javascript (or vice
versa, I don't quite recall), but I've never run into this in the
wild)
There's also the escape_javascript helper

Fred

Viral

unread,
Oct 8, 2011, 4:46:52 PM10/8/11
to rubyonra...@googlegroups.com
Thanks you guys for prompt response. It was helpful.
Reply all
Reply to author
Forward
0 new messages