Как я могу заставить SimpleForm включать тег скрипта один раз при использовании пользовательского ввода?

Я использую виджет Chosen с пользовательским вводом, наследуемым от CollectionInput в SimpleForm 2.

Чтобы активировать Избранное, javascript <script>$(".chzn-select").chosen();</script> должен появиться где-то на странице. Было бы неплохо, если бы я мог заставить simple_form_for автоматически добавлять его на страницу, если в форме используется один или несколько пользовательских входов, требующих Chosen. Есть ли способ сделать это, кроме разветвления драгоценного камня или выполнения какого-либо потенциально хрупкого исправления обезьяны?


person James    schedule 26.03.2012    source источник


Ответы (1)


Вы можете сделать это ненавязчивым способом. Установите класс «выбранный» для каждого ввода, который вы хотите применить к виджету. А потом где-то в активах/javascripts

$(".chosen").each(function(){$(this).chosen()})
person mikdiet    schedule 26.03.2012
comment
Но на подавляющем большинстве страниц проекта виджета не будет. Кажется немного расточительным выполнять javascript при каждой загрузке страницы. - person James; 30.03.2012
comment
Если нет элементов с классом chosen - итерации выполняться не будут - где отходы? - person mikdiet; 30.03.2012
comment
Он по-прежнему выполняет выборку на каждой странице. - person James; 31.03.2012
comment
Отходы сервера важнее, чем отходы клиента - person mikdiet; 31.03.2012