On Dec 3, 1:56 pm, Raimon Fs <co... / montx.com> wrote:
> 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
> --
> 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).