select_date
предназначен для построения выпадающих списков, которые не связаны с модельным полем (с мыслью, что вы можете подобрать их на другой стороне и делать с ними то, что хотите).Я предполагаю, что вы имеете в виду date_select
, который работает на модели?
В любом случае, насколько я знаю, если говорить коротко, нет хорошего и красивого способа заставить это работать.Это не из-за того, как работает помощник, а из-за того, как активная запись обрабатывает эти атрибуты, разбитые на несколько параметров.
Если вас интересует немного подробнее, причина, по которой это не такЭто легко сделать, потому что, когда Active Record имеет дело с параметрами, которые вы передали, он проходит через execute_callstack_for_multiparameter_attributes
, который интерпретирует ключи, которые были разделены на стиль "date (1i)", иобъединяет их в соответствующий класс, которым они должны быть (объект даты или времени).Чтобы выяснить, должна ли она создать дату или время, нужно проверить ее по типу атрибута ( см. Здесь ), но поскольку ваш атрибут startdate не привязан к определенному типу, он не обрабатывается как столбец даты или даты и времени в БД.
Я думаю, что я справлюсь с этим аналогично @ Phyo-Wai-Win, но используйте select_date
для установки другого параметравне пространства имен 'search', которое вы затем передаете в модель соответствующим образом в контроллере.Таким образом, это не так много работы, и это означает, что вы не путаетесь с тем, как вы инициализируете запись или какие атрибуты она ожидает.