в рельсах, Какое значение возвращается для флажка? - PullRequest
6 голосов
/ 01 ноября 2010

Я хочу установить срок действия файла cookie через 1 год, если установлен флажок «запомнить меня».

У меня есть форма ввода флажка, например:

<%= check_box_tag 'remember', '', false, :class => 'checkbox' %>

Что будетзначение будет, когда оно будет опубликовано?

Будет ли оно true / false или проверено или 1 или?Я установил значение '' в помощнике.

Ответы [ 3 ]

10 голосов
/ 20 апреля 2012

Флажок вернет либо 0, либо 1.

Не сравнивайте с false и true, так как это может вызвать проблемы, поскольку 0 - это true в Ruby.

7 голосов
/ 01 ноября 2010

В документации по rails API есть полезное объяснение отсутствующих параметров и обходного пути скрытого поля:

http://api.rubyonrails.org/classes/ActionView/Helpers/FormHelper.html#method-i-check_box

check_box (имя_объекта, метод, параметры = {},check_value = "1", unchecked_value = "0")

Возвращает тег флажка, предназначенный для доступа к указанному атрибуту (идентифицированному методом) для объекта, назначенного шаблону (идентифицируемого объектом).Этот объект должен быть объектом экземпляра (@object), а не локальным объектом.Предполагается, что метод возвращает целое число, и если это число выше нуля, то флажок установлен.Дополнительные параметры входного тега могут быть переданы в виде хэша с параметрами.Check_value по умолчанию равно 1, а unchecked_value по умолчанию установлено в 0, что удобно для логических значений.Получено

Спецификация HTML гласит, что снятые флажки не установлены, и поэтому веб-браузеры их не отправляют.К сожалению, это вводит принцип: если модель Invoice имеет оплаченный флаг и в форме, которая редактирует оплаченный счет, пользователь снимает флажок, оплаченный параметр не отправляется.Таким образом, любая идиома массового назначения, например

@invoice.update_attributes (params [: invoice])

не будет обновлять флаг.

Чтобы предотвратить это, помощник генерируетвспомогательное скрытое поле перед самим флажком.Скрытое поле имеет то же имя, и его атрибуты имитируют непроверенный флажок.

Таким образом, клиент отправляет только скрытое поле (представляющее флажок не проверено) или оба поля.Поскольку в спецификации HTML говорится, что пары ключ / значение должны отправляться в том же порядке, в котором они появляются в форме, а извлечение параметров получает последнее вхождение любого повторяющегося ключа в строке запроса, что работает для обычных форм.

0 голосов
/ 01 ноября 2010

Вы получаете в своем действии параметры

params['remember']

Если при проверке у вас есть параметры с ложным значением.Если это не так, у вас нет параметров, отправляемых на ваши действия.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...