Help with ? yield :

Hello,

I’m new to Ruby and Rails, and I’m learning at the same time I’m reading
books and following some threads on the web, and of course,
experimenting …

What’s the meaning of this: ?

   session[:auth] ? yield : (
   session[:intended_action] = action_name
   session[:intended_controller] = controller_name
   flash[:notice] = 'You need to be logged in to access this panel'
   session_update_time
   all_ok = 0
   render(:template => 'login/index'))

I understand what it does, but not what means:

? yield : ( … some code …)

thanks!

raimon

? is the equivalent to ‘if’ kinda… For example

a = 10
if a == 10 then else end

is the same is

a == 10 ? :

Hope that helped.

Regards,
Lee

Raimon Fs wrote:

I understand what it does, but not what means:

? yield : ( … some code …)

foo ? bar : baz
is equivalent to
if foo then bar else baz end

HTH,
Sebastian

thanks to all !!

now is clear!

Raimon

On Dec 3, 1:56 pm, Raimon Fs [email protected] wrote:

   session[:intended_action] = action_name

thanks!

raimon

Posted viahttp://www.ruby-forum.com/.

so ? : is normally called the trinary operator, and is common to a
bunch of languages (C, Ruby, Javascript, etc ad nauseum).

In ruby,

a?b:c

is shorthand for

if a
b
else
c
end

( not so much in C, since if statements don’t have values in C )

So session[:auth] ? yield : ( … ) either yields to a block passed by
the calling function, or executes the code defined in (…), depending
on whether session[:auth] is truish (not false or nil).

This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.

| Privacy Policy | Terms of Service | Remote Ruby Jobs