rendering multiline Javascript by using JSONP in rails

Hello everybody,

In a controller I try to render a javascript google ad to print it
into some HTML using JSONP, like this

<script type="text/javascript"><!--
google_ad_client = "pub-23222424";
google_alternate_color = "FFFFFF";
google_ad_width = 468;
google_ad_height = 60;
//--></script>
<script type="text/javascript"
  src="http://pagead2.google.com/pgad/show_ads.js">
</script>

So I do:

render :text "var s_response = { content: '<script type=\"text/
javascript\"><!--\\ngoogle_ad_client = \"pub-23222424\";\
\ngoogle_alternate_color = \"FFFFFF\";\\ngoogle_ad_width = 468;\
\ngoogle_ad_height = 60;\\n//--><\\/script>\\n<script type=\"text/
javascript\"\\n src=\"http://pagead2.google.com/pgad/show_ads.js\">\
\n<\\/script>', id: '2'};">

But i get this error:

unterminated string literal

[Break on this error] var response = { content: '<script type="text/
javascript"><!--

=> That seems like it is a multilines problem right ? But I don't know
how to resolve it.

Thanks,

Lucas

Lucas wrote:

Hello everybody,

In a controller I try to render a javascript google ad to print it
into some HTML using JSONP, like this

<script type="text/javascript"><!--
google_ad_client = "pub-23222424";
google_alternate_color = "FFFFFF";
google_ad_width = 468;
google_ad_height = 60;
//--></script>
<script type="text/javascript"
  src="http://pagead2.google.com/pgad/show_ads.js">
</script>

So I do:

render :text "var s_response = { content: '<script type=\"text/
javascript\"><!--\\ngoogle_ad_client = \"pub-23222424\";\
\ngoogle_alternate_color = \"FFFFFF\";\\ngoogle_ad_width = 468;\
\ngoogle_ad_height = 60;\\n//--><\\/script>\\n<script type=\"text/
javascript\"\\n src=\"http://pagead2.google.com/pgad/show_ads.js\">\
\n<\\/script>', id: '2'};">

But i get this error:

unterminated string literal

[Break on this error] var response = { content: '<script type="text/
javascript"><!--

=> That seems like it is a multilines problem right ?

No. The problem is that your double-quoted string contains double
quotes!

But I don't know
how to resolve it.

There are quoting constructs that would do the trick. But you have a
bigger problem: you really shouldn't be doing this in the controller.
Rendered JS, like rendered HTML, belongs in the view.

Thanks,

Lucas

Best,

No. The problem is that your double-quoted string contains double
quotes!

It contains double-quotes but they are escaped aren't they ?

There are quoting constructs that would do the trick. But you have a
bigger problem: you really shouldn't be doing this in the controller.
Rendered JS, like rendered HTML, belongs in the view.

In fact this code isn't print in my HTML but in the HTML of another
website, thiat is why it is in a controller and not a view

Thanks,

Lucas

Lucas wrote:

No. �The problem is that your double-quoted string contains double
quotes!

It contains double-quotes but they are escaped aren't they ?

Whoops! You're right. I somehow overlooked the backslashes.

There are quoting constructs that would do the trick. �But you have a
bigger problem: you really shouldn't be doing this in the controller.
Rendered JS, like rendered HTML, belongs in the view.

In fact this code isn't print in my HTML but in the HTML of another
website, thiat is why it is in a controller and not a view

Doesn't matter. If it goes to the user's browser, it should generally
be in a view.

Thanks,

Lucas

Best,