what is the difference "case && if" ?

The statements you are making are not the same

if request.post?

is either true or false

case request
  when post

is akin to saying:
if request == post

If you want to use a case statement, then try something like:
case request.post?
when true
# do something
when false
....etc.

There's not much need for a case statement when evaluating true or
false, though.