2016-04-04 3 views
1

Как назначить логическое значение атрибуту сеанса и прочитать/проверить его с другого места?Назначение логического значения для атрибута сеанса в jRuby/ruby ​​on rails

Это правильный способ ??

Назначение:

<% session[:contacts_available]=true %> 

Проверка значения:

<% if session[:contacts_available]? %> 
     <p> Donec interdum turpis eget leo lobortis, sit amet lacinia ante vulputate. Maecenas hendrerit 
     euismod nulla in semper. Donec arcu nibh, faucibus at posuere id, dapibus non tellus. </p> 

    <% else %> 
     <p> You're logged in as : <%= current_user.email %> <%= link_to "Log Out", logout_path %> </p> 
     <p> Welcome to our service. You currently don't have any contact details under your username. 
     Please fill the below form to show the first contact detail of yours. </p> 

    <% end %>  

ответ

2

Если вы хотите явно проверить это быть true, не truthy:

<% if session[:contacts_available] == true %> 

или

<% if TrueClass === session[:contacts_available] %> 

Если truthy (ни false ни nil) достаточно:

<% if session[:contacts_available] %> 

Вопросительный знак предназначен для использования в имени метода окончаний по соглашению, не следует ставить его «на всякий случай. "

1

Да, вы можете назначить логическое значение для сессии, чтобы проверить его в выражении if, удалите ?.

session[:contacts_available] ? "Found" : "Not Found" 

OR 

    <% if session[:contacts_available] %> 
     <p> Yeah Contact Found </p>  
    <% else %> 
     <p>Contacts not found </p> 
    <% end %>  

Boolean:

true == true # returns true 

false == true # returns false 

Если заявление:

#session[:contacts_available] = true 

if true 
    puts "True" 
else 
    puts "false" 
end 
1

Вы можете попробовать. Вы не должны требовать ? в session[:contacts_available]?

Я думаю, что вы хотите, чтобы проверить его наличие истинного так if true является выполнение блока еще выполнить другой

<% if session[:contacts_available] %> 
     <p> Donec interdum turpis eget leo lobortis, sit amet lacinia ante vulputate. Maecenas hendrerit 
    euismod nulla in semper. Donec arcu nibh, faucibus at posuere id, dapibus non tellus. </p>  
    <% else %> 
     <p> You're logged in as : <%= current_user.email %> <%= link_to "Log Out", logout_path %> </p> 
    <p> Welcome to our service. You currently don't have any contact details under your username. 
    Please fill the below form to show the first contact detail of yours. </p> 
    <% end %>