Hello,
I have a simple application that allows you to create an account, sign
in, and play a game using an embedded web player on an .rhtml page.
The web player (Unity) is able to call javascript functions on
the .rhtml page. The .rhtml page uses a partial to render a high score
list.
I want to be able to refresh the current high score list based on the
level you are on in the game. The game calls the following JS when a
level is cleared:
<script language="javascript1.1"
type="text/javascript">
function loadHighScores(level)
{
//this won''t work because the button is invisible in JS and because
level is not accessible to Ruby
//
<% form_remote_tag :url => { :action
=> :update_scores, :id => level } do %>
<%= submit_tag "Refresh Scores for This Level" %>
<% end %>
}
</script>
So is there a way to:
a) pass the JS level variable to Ruby
b) perform the remote call without the user having to press a button;
in other words, only when the JS function loadHighScores is called by
the external game player (I would like to avoid the function
periodically_call_remote if possible)
My apologies if this post belongs in one of the spin-off groups
(AJAX).
Thanks,
n
--~--~---------~--~----~------------~-------~--~----~
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
-~----------~----~----~----~------~----~------~--~---
tonypm
2007-Oct-06 09:47 UTC
Re: passing a javascript variable to ruby in a view - possible?
Just create an ajax request and allow a parameter to be passed in
<script type="text/javascript">
//<![CDATA[
function update_my_method(a_value) {
new Ajax.Request(''/my_controller/my_method/''+a_value,
{asynchronous:true, evalScripts:true})
}
//]]>
</script>
i don''t think that there is currently a helper to do this. This
quick and dirty helper (based on javascript_tag and code from
remote_function) will create a simple id value.
def pass_to_remote(options, function_name)
javascript_options = options_for_ajax(options)
function = "function #{function_name}(value){"
function<< "new Ajax.Request("
url_options = options[:url]
url_options = url_options.merge(:escape => false) if
url_options.is_a?(Hash)
function <<
"''#{url_for(url_options)}/''+value)"
function << ", #{javascript_options}"
function<< "}"
return javascript_tag(function)
end
To use in the view something like.
<%=
pass_to_remote({:url=>{:action=>''change_something''}},
''remote_change'') %>
will create a javascript function called ''remote_change'',
only url
option is included, and this should only contain action and
controller.
To test: (obviously you would have javascript code that can call
remote_change directly).
<a href=''#''
onclick=''remote_change(8)''>hello</a>
This works. I have also tried extending the helper to allow a name
for the value to be included so that it appears with that name in the
params. But this is a bit more tricky and I havn''t quite got it right
yet, separating the named value and the id value is not quite
straightforward.
hth
Tonypm
--~--~---------~--~----~------------~-------~--~----~
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
-~----------~----~----~----~------~----~------~--~---
Frederick Cheung
2007-Oct-06 17:56 UTC
Re: passing a javascript variable to ruby in a view - possible?
On 6 Oct 2007, at 10:47, tonypm wrote:> > i don''t think that there is currently a helper to do this. This > quick and dirty helper (based on javascript_tag and code from > remote_function) will create a simple id value. >You can do this with :with <script > jsparams={person_name: ''bob'' quantity: 2}; </script> <%= link_to_remote ''foo'', :url => {:action => ''index''}, :with => ''jsparams''%> Clicking on the link results in Processing FooController#index (for 127.0.0.1 at 2007-10-06 18:55:44) [POST] Session ID: cd593ad4bfc50ff48ce34d7fa4e0d7d1 Parameters: {"person_name"=>"bob", "quantity"=>"2", "action"=>"index", "controller"=>"foo"} :with can be pretty much any javascript expression. Fred --~--~---------~--~----~------------~-------~--~----~ 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 -~----------~----~----~----~------~----~------~--~---