2016-07-18 2 views
0

Возможно ли создать собственный код, который включает как javascript (jQuery), так и код Ruby?Пользовательский объект jQuery per Rails

У меня есть неопределенное количество объектов, которые я заполняю в представлении, которые используют плагин jquery-cron, который должен быть создан с использованием тегов идентификаторов вместо селектора классов. На данный момент я просто пытаюсь создать jQuery в тегах <script></script> в конце представления.

На мой взгляд:

<% @devices.each do |d| %> 
    <div id="scan_selector_device_<%= d.id %>"></div> 
     <input type="hidden" id="device_id"> 
     <input type="hidden" id="scan_time_device_<%= d.id %>" required="required"> 
    </div> 
<% end %> 

Таким образом, у меня может быть 1 или 50 из них созданы в зависимости от количества устройств, которые пользователь.

Чтобы получить эту работу, мне нужно вызвать JavaScript для инициализации:

<script> 
    $('#scan_selector_device_1').cron({ 
    onChange: function() { 
     $('#scan_time_device_1').val($(this).cron("value")); 
    }, 
    useGentleSelect: true, 
    }); 
</script> 

Я хотел бы, чтобы обернуть JavaScript в том же .each и создать соответствующий инициализатор для каждого объекта делает что-то вроде:

<script> 
    $("#scan_selector_device_<%= d.id %>").cron({ 
    onChange: function() { 
     $('#scan_time_device_<%= d.id %>').val($(this).cron("value")); 
    }, 
    useGentleSelect: true, 
    }); 
</script> 

Однако это не работает. Итак, как мне это сделать?

+0

Вы пытались предоставить каждому объекту cron тот же класс? например, 'class =" cron "' и просто использовать '.each()' для их инициализации? – mrvncaragay

+0

@ Marv-C Да, проблема в третьей строке, где мне нужно создать значение cron. Он копирует их все, если я каким-то образом не нацелен на 'scan_time_device _ # {d.id}' для сохранения значения. – Godzilla74

ответ

0

Ну, оказывается, это действительно работает. Выделение синтаксиса в моем редакторе заставляло меня думать иначе. Мне также пришлось изменить часть кода выше, чтобы сделать работу инициализатора:

<% @devices.each do |d| %> 
    $("#scan_selector_device_<%= d.id %>").cron({ 
    onChange: function() { 
     $("#scan_time_device_<%= d.id %>").val($(this).cron("value")); 
    }, 
    useGentleSelect: true, 
    }); 
<% end %> 
Смежные вопросы