I have been pulling my hair out for way too long on this...and it seems so trivial! The following does not work: if page[''test''].className == "whatever" page[''test''].className = "whatever2" end Now that I write this post, I realize why it doesn''t work - className is a value in the Javascript code - not in Rails. But, is there any way to access the className value in the IF statement? Thanks, Vishal -- Posted via http://www.ruby-forum.com/. --~--~---------~--~----~------------~-------~--~----~ 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 -~----------~----~----~----~------~----~------~--~---
> I have been pulling my hair out for way too long on this...and it seems > so trivial! The following does not work: > > if page[''test''].className == "whatever" > page[''test''].className = "whatever2" > end > > Now that I write this post, I realize why it doesn''t work - className is > a value in the Javascript code - not in Rails. But, is there any way to > access the className value in the IF statement?select maybe? http://api.rubyonrails.org/classes/ActionView/Helpers/PrototypeHelper/JavaScriptGenerator/GeneratorMethods.html#M000430 ------------------------------------------------------------------------ select(pattern) Returns a collection reference by finding it through a CSS pattern in the DOM. This collection can then be used for further method calls. Examples: page.select(''p'') # => $$(''p''); page.select(''p.welcome b'').first # => $$(''p.welcome b'').first(); page.select(''p.welcome b'').first.hide # => $$(''p.welcome b'').first().hide(); You can also use prototype enumerations with the collection. Observe: page.select(''#items li'').each do |value| value.hide end # => $$(''#items li'').each(function(value) { value.hide(); }); Though you can call the block param anything you want, they are always rendered in the javascript as .value, index.. Other enumerations, like collect() return the last statement: page.select(''#items li'').collect(''hidden'') do |item| item.hide end # => var hidden = $$(''#items li'').collect(function(value, index) { return value.hide(); }); --~--~---------~--~----~------------~-------~--~----~ 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 -~----------~----~----~----~------~----~------~--~---
Nope...After perusing through some message boards, it seems that RJS does not currently have the ability to use Ruby conditional logic. =( -- Posted via http://www.ruby-forum.com/. --~--~---------~--~----~------------~-------~--~----~ 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 -~----------~----~----~----~------~----~------~--~---
Are you trying to update the style class of a specific node or all of the nodes containing a particular class? Is the RJS returned from a specific AJAX function link from the node you are interested in? You could use the :with attribute to pass in the style class name if this is the case. On 10/4/06, Vishal Abru <rails-mailing-list-ARtvInVfO7ksV2N9l4h3zg@public.gmane.org> wrote:> > > Nope...After perusing through some message boards, it seems that RJS > does not currently have the ability to use Ruby conditional logic. =( > > -- > Posted via http://www.ruby-forum.com/. > > > >-- Thanks, -Steve http://www.stevelongdo.com --~--~---------~--~----~------------~-------~--~----~ 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 -~----------~----~----~----~------~----~------~--~---
Vishal Abru wrote:> I have been pulling my hair out for way too long on this...and it seems > so trivial! The following does not work: > > if page[''test''].className == "whatever" > page[''test''].className = "whatever2" > end > > Now that I write this post, I realize why it doesn''t work - className is > a value in the Javascript code - not in Rails. But, is there any way to > access the className value in the IF statement?Yeah, there''s a fundamental misunderstanding going on here. When you write an RJS template, you''re not writing Ruby that communicates ''live'' with Javascript on the web browser. The entire RJS template is converted to Javascript on the server, and is then sent in one big lump to the web browser, where it is run. Therefore, you cannot do anything in RJS that involves ''reading'' something about the state of the browser or document. Or in other words, the entire RJS template has to make sense without any knowledge of what''s going on in the browser/document. I''d just drop into Javascript for this kind of thing. Chris --~--~---------~--~----~------------~-------~--~----~ 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 -~----------~----~----~----~------~----~------~--~---
On 5 October 2006 12:51, Chris Mear wrote:> Vishal Abru wrote: > > I have been pulling my hair out for way too long on this...and it seems > > so trivial! The following does not work: > > > > if page[''test''].className == "whatever" > > page[''test''].className = "whatever2" > > end > > > > Now that I write this post, I realize why it doesn''t work - className is > > a value in the Javascript code - not in Rails. But, is there any way to > > access the className value in the IF statement? > > Yeah, there''s a fundamental misunderstanding going on here. When you > write an RJS template, you''re not writing Ruby that communicates ''live'' > with Javascript on the web browser. The entire RJS template is > converted to Javascript on the server, and is then sent in one big lump > to the web browser, where it is run. > > Therefore, you cannot do anything in RJS that involves ''reading'' > something about the state of the browser or document. Or in other > words, the entire RJS template has to make sense without any knowledge > of what''s going on in the browser/document. > > I''d just drop into Javascript for this kind of thing.Yet, there is a solution. I had the very same problems and have written a simple plugin that allows something like this: page.if page[''test''].hasClassName(''whatever'') do page[''test''].classNames.set(''whatever'') end You can install it with this command: ./script/plugin install svn://rubyforge.org/var/svn/js-if-blocks/trunk/js-if-blocks --~--~---------~--~----~------------~-------~--~----~ 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 -~----------~----~----~----~------~----~------~--~---