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