Поля формы представлены в виде строк, поэтому params[:notes][:private]
будет содержать "0"
, а не 0
.
Вы можете использовать либо params[:notes][:private] == "0"
, либо params[:notes][:private].to_i == 0
, чтобы получить сравнение, которое вы ищете.
Если вы хотите обрабатывать нецелые значения (включая пустые строки и пропущенные значения) иначе, чем 0, вы не должны использовать String#to_i
. Я бы порекомендовал проверить значение String в этих случаях.
Вы можете использовать Object#inspect
(как упомянуто @ sepp2k) и Object#class
при отладке, чтобы получить лучшее представление о типах вещей. При использовании script/console
я нахожу ap
(или pp
) весьма удобным.
Примечание: в Ruby вам не нужно так много скобок. Вот ваш пример после небольшой очистки:
unless params[:note][:text].blank?
logger.debug "passed first test"
logger.debug params[:note][:private].inspect
if params[:note][:private].to_i == 0
logger.debug "passed second test"
end
end