cldwalker
2006-Nov-28 19:10 UTC
using Javascript''s prompt() and render_component to make one Rails action interactive
Hi, I''m trying to use a combination of render_component and Javascript''s prompt() to make one Rails action interactive. This means I could ask for input via Javascript and then pass the Javascript answer to some Ruby code. Is this possible? For example: =====class FilesController < ApplicationController def js_save $answer = params[:answer] render :nothing=>true end def js_ask render :inline=>%[ <%= javascript_include_tag :defaults %> <script type="text/javascript"> var answer = prompt(''<%= @params[:prompt] %>'',''''); /* new Ajax.Request(''/files/js_save?answer='' + answer, {asynchronous:true, evalScripts:true}); */ </script> ] end def some_action a = "default value" render :inline=>%[ <%= render_component :action=>''js_ask'', :params=>{ :prompt=>''1st value of a?''} %> <%# set a to the new answer, $answer %> <%# a = $answer %> <%# render_component :action=>''js_ask'', :params=>{ :prompt=>''2nd value of a?''} %> ], :layout=>true end end =====Note: Try the above with /files/some_action My main problem is that I can''t get back the JS variable answer while I''m still in some_action(). Possible ways I thought of returning answer: * an Ajax request (commented out), passing answer as a parameter: This doesn''t work since the request is executed after some_action(). * a JS redirect (window.location.href = '''', passing answer as a parameter: Same as above. * writing to a file/database or using a system call and have Ruby read from wherever JS wrote: I''ve read that JS file manipulation and system calls aren''t possible for security reasons. Even if I could this, seems like a convoluted way of passing a value. Given my limited knowledge of JS, is there some obvious way I''m missing to return a JS value to Ruby within a Rails action? If you''re wondering why I have the one Rails action constraint, it''s due to using callcc() (not shown above) which only works within one web request/action. Otherwise, I get threading errors. Thanks, Gabriel --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---