2013-09-18 2 views

ответ

2

если @message возвращение true перенаправления на read_account_inbox_message_url(@message) URL, иначе перенаправление account_inbox_url

Wiki

+0

Это сокращенная, если оператор –

+3

Параметр '@ message' не должны быть' true', он должен только быть «правдивость» (т. е. не «ноль», а не «ложь») –

1

Это называется тройной оператор. Это обсчитывать за высказывание:

if redirect_to @message is true 
    then 
read_account_inbox_message_url(@message) 
    otherwise 
account_inbox_url 

Синтаксис является

test ? if_test_result_is_true_then_do_this : if_test_result_is_false_then_do_this 
1

Это то же самое:

if @message 
    read_account_inbox_message_url(@message) 
else 
    account_inbox_url 
end 
0

Это тройная выражение, используемое в качестве аргумента метода redirect_to.

В словах, это означает: redirect to read_account_inbox_message_url(@message) if @message is true, or, redirect_to account_inbox_url

Формат трехкомпонентного выражения: expression ? evaluate_if_true : evaluate_if_false.

0

Этот код eqivalent к:

redirect_to (@message ? read_account_inbox_message_url(@message) : account_inbox_url) 

Если @message является "truthy" (в Ruby, все, кроме nil и false является truthy), результат read_account_inbox_message_url(@message) будет передан в качестве аргумента redirect_to метода. В противном случае будет принят результат account_inbox_url.

2

Это называется тернарный оператор. И это сокращение для

redirect_to if @message 
    read_account_inbox_message_url(@message) 
else 
    account_inbox_url 
end 

Как если заявление он проверяет условие правдивости и возвращает оценку первой части или еще во второй части.

1

?: является тройная условное выражение:

condition ? value_if_true : value_if_false 

Это сокращение для:

if condition 
    value_if_true 
else 
    value_if_false 
end 

В вашем примере, @message является условием, read_account_inbox_message_url(@message) является "истинной ценности" и account_inbox_url является «ложное значение». После оценки вызывается redirect_to с результатом выражения.

Это эквивалентно (и я бы написать так):

if @message 
    redirect_to read_account_inbox_message_url(@message) 
else 
    redirect_to account_inbox_url 
end 
Смежные вопросы