Forum: Ruby on Rails [Problem] Javascript returned by link_to_remote cannot be au

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
allen (Guest)
on 2007-05-09 15:12
(Received via mailing list)
I created a ajax link using link_to_remote helper. I used the
options[:submit] so that I can submit a form using ajax POST method.
This ajax call would render a rjs in which I did some DOM operations
on the current page. The content of the response is just what I
want(some javascript), but it just cannot be evaluated
automatically.The link my link_to_remote generates is:

<a href="#" id="textSearchLink" onclick="new Ajax.Request('/searches',
{asynchronous:true, evalScripts:true}); return false;">Search</a>

I think the "evalScripts:true" should tell the page to automatically
evaluated the returned javascript but the fact is not like that. I've
used other link_to_remote before, all of which use ajax GET method.
I'm thinking whether the returned javascript will not be automatically
evaluated if the ajax method is POST.

How can I solve this problem? Thanks a lot.
Jason R. (Guest)
on 2007-05-09 16:54
(Received via mailing list)
There's nothing wrong with that link. What is the javascript/RJS you're
sending to the page?

Jason
allen (Guest)
on 2007-05-10 08:36
(Received via mailing list)
try {

    Element.replace("textSearchLink", "<a href=\"#\" onclick=\"new
Ajax.Request('/searches/54', {asynchronous:true, evalScripts:true,
parameters:Form.serialize('textSearchFieldset')});
        return false;\">Add</a>");
    Element.replace("materialPropertySearchLink", "<a href=\"#\"
onclick=\"new Ajax.Request('/searches/54', {asynchronous:true,
evalScripts:true,
        parameters:Form.serialize('materialPropertySearchFieldset')});
return false;\">Add</a>");
    Element.replace("metalCompositionSearchLink", "<a href=\"#\"
onclick=\"new Ajax.Request('/searches/54', {asynchronous:true,
evalScripts:true,
        parameters:Form.serialize('metalCompositionSearchFieldset')});
return false;\">Add</a>");
    new Insertion.Bottom("searchCriteriaDiv", "<p>\n  <a href=\"#\"
onclick=\"new Ajax.Request('', {asynchronous:true, evalScripts:true});
return false;\">Remove</a>\n
        <label>keyword2</label>\n</p>");

} catch (e) { alert('RJS error:\n\n' + e.toString());
alert('Element.replace(\"textSearchLink\", \"<a href=\\\"#\\\" onclick=
\\\"new Ajax.Request(\'/searches/54\', {asynchronous:true,
evalScripts:true, parameters:Form.serialize(\'textSearchFieldset\')});
return false;\\\">Add</a>\");
\nElement.replace(\"materialPropertySearchLink\", \"<a href=\\\"#\\\"
onclick=\\\"new Ajax.Request(\'/searches/54\', {asynchronous:true,
evalScripts:true,
parameters:Form.serialize(\'materialPropertySearchFieldset\')});
return false;\\\">Add</a>\");
\nElement.replace(\"metalCompositionSearchLink\", \"<a href=\\\"#\\\"
onclick=\\\"new Ajax.Request(\'/searches/54\', {asynchronous:true,
evalScripts:true,
parameters:Form.serialize(\'metalCompositionSearchFieldset\')});
return false;\\\">Add</a>\");\nnew Insertion.Bottom(\"searchCriteriaDiv
\", \"<p>\\n  <a href=\\\"#\\\" onclick=\\\"new Ajax.Request(\'\',
{asynchronous:true, evalScripts:true}); return false;\\\">Remove</a>\
\n  <label>keyword2</label>\\n</p>\");'); throw e }


For now, I'm using the option[:complete] to evaluate the above script,
so the link should be like:

<%= link_to_remote 'Search', { :url => searches_path, :submit =>
'textSearchFieldset', :complete => 'eval(request.responseText)' },
{ :id => 'textSearchLink' } %>

This does work, but the script should be evaluated automatically other
than using :complete => 'eval(...)'.
This topic is locked and can not be replied to.