Dynamically add javascript tag to a view...

Hi everybody,

I would like to add javascript tags dynamically to my view. So I used
the following code :

@events.each do |e|

          %(javascript_tag 'new
Popup('event_popup_#{e.id}','event_link_#{e.id}')')

end

However it seems the code is not being added to my DOM.

How can I correctly code this ?

Thanks in advance.

Joel

What’s wrong with doing this:

?

Yes of course :wink: !

Thank you very much...

Joel

joel wrote:

Hi everybody,

I would like to add javascript tags dynamically to my view. So I used
the following code :

@events.each do |e|

          %(javascript_tag 'new
Popup('event_popup_#{e.id}','event_link_#{e.id}')')

end

%() declares a string literal, so nothing happens to your javascript_tag. And .each won't return your string - even the correct one.

Try this eRB:

<%=
   @events.map do |e|
      javascript_tag "new
           Popup('event_popup_#{e.id}','event_link_#{e.id}');"
   end
%>

That still has its own style issues, including it will push several <script> tags in, not just one efficient one. You could also try this:

<%= javascript_tag @events.map{|e|
          "new
           Popup('event_popup_#{e.id}','event_link_#{e.id}');"
         }.join
%>

So that puts the <script> tag on the outside, and the "unrolled loop" on the inside.