This is a pretty simple question I can''t find the answer to... Obviously <%= %> directs the output of all the commands inside the block to the html file being generated. that works fine with rails helpers and variables, but what if I simply want to output a string if a certain condition was met? e.g: <%= @user.nil? "not logged in" : @user.name%> so if the user is not logged an appropraite text is echoed. I''ve tried print (which ends up doing strange things) and puts (which gives me a 500 error no less). How is this done? Thanks, Ehud PS - I know I can break this up so the text would no be inside the erb code, but that ends up with some really ugly code. -- 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?hl=en -~----------~----~----~----~------~----~------~--~---
This should do it: <%= "non logged in" unless @user -%> Or you could create a helper method in application_helper: def log_on_status(user=nil) if user return "Logged on as #{user.name}" else return "User not logged on" end end And then in the view enter <%= log_on_status(@user) -%> -- 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?hl=en -~----------~----~----~----~------~----~------~--~---
Rob Nichols wrote:> This should do it: > > <%= "non logged in" unless @user -%> > > Or you could create a helper method in application_helper: > > def log_on_status(user=nil) > if user > return "Logged on as #{user.name}" > else > return "User not logged on" > end > end > > And then in the view enter > > <%= log_on_status(@user) -%>the "-" at the end ( -%> ) makes this possible? Is there no way to just echo a string to the screen? -- 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?hl=en -~----------~----~----~----~------~----~------~--~---
Hi,> <%= @user.nil? "not logged in" : @user.name%> > > so if the user is not logged an appropraite text is echoed. > I''ve tried print (which ends up doing strange things) and puts (which > gives me a 500 error no less). How is this done? >your approach is good, but you got misleaded by the question mark. nil? is a method of object, so the whole name of the method is nil?, with the question mark included. if you want to use the operator ? the syntax is condition ? result_if_true : result_if_false the trick here is that in your case the condition would be @user.nil? and then the syntax would be <%= @user.nil? ? "not logged in" : @user.name%> notice the extra ? you didn''t have before. So.. you were really close. Because of ruby accepting ? as a method name i had a hard time at the beginning using the ? operator coming from other languages. Finally I got used to use it always like (condition) ? (if_true) : (if_false) this way, by using the brackets, it makes easier to have the right syntax at the first try ;) And, anyway, to complete the answer to your question... for really really really special cases where you cannot just use <%=%> syntax for some obscure reason (usually complex helpers with blocks), you could use the concat method. As documentation says, the <%=%> standard erb syntax is preferred. Regards, javier ramirez -- -------- Estamos de estreno... si necesitas llevar el control de tus gastos visita http://www.gastosgem.com !!Es gratis!! --~--~---------~--~----~------------~-------~--~----~ 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 -~----------~----~----~----~------~----~------~--~---
Ehud Rosenberg wrote:> Rob Nichols wrote: >> This should do it: >> >> <%= "non logged in" unless @user -%> >> >> Or you could create a helper method in application_helper: >> >> def log_on_status(user=nil) >> if user >> return "Logged on as #{user.name}" >> else >> return "User not logged on" >> end >> end >> >> And then in the view enter >> >> <%= log_on_status(@user) -%> > > the "-" at the end ( -%> ) makes this possible? > Is there no way to just echo a string to the screen?The "-" is just supressing a newline in the HTML output. It has no affect on the logic. This echoes a string: <%= "string" %> (thought it isn''t very useful, obviously because it is just a static string) This conditionally echoes a string: <%= "string" if @user %> -matthew -- 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?hl=en -~----------~----~----~----~------~----~------~--~---
Matthew Isleb wrote:> Ehud Rosenberg wrote:>> the "-" at the end ( -%> ) makes this possible? >> Is there no way to just echo a string to the screen? > > The "-" is just supressing a newline in the HTML output. It has no > affect on the logic. > > This echoes a string: > > <%= "string" %> >The use of -%> is a style thing. I tend to use it situations like this where just a small bit of text is being dynamically inserted. I use it because I think the resulting HTML is neater, easier to read and therefore easier to debug. If you don''t use it a newline gets added after each dynamic entry. For example: <p><%= "string" %></p> outputs: <p>string </p> Whereas <p><%= "string" -%></p> outputs: <p>string</p> -- 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?hl=en -~----------~----~----~----~------~----~------~--~---