Ruby on Rails: link_to javascript

<% @services.each do |service| %>
    <div class="widget-content nopadding">
        <ul class="activity-list">
            <li>
                <%= link_to service.company.name, "#", :id => 'specific_service' %>
            </li>
        </ul>

    </div>
<% end %>

Итак, у меня есть список различных сервисов, у каждого из которых есть идентификатор. link_to отображает название компании службы, которая выполняет функцию javascript "specific_service". Но я хочу, чтобы он отображал уникальные данные в соответствии с идентификатором сервиса. Как передать service.id на link_to, чтобы контроллер имел доступ к правильному сервису?

РЕДАКТИРОВАТЬ

$('#specific_service').click(function(){
    var id = $(this).data('id');
    var _url = '<%= dashboard_specific_service_path(:format => :js) %>?start_date=' + encodeURI($('#start_date').val()) + '&end_date=' + encodeURI($('#end_date').val()) + '&service_id=' + id;
    $.ajax({
      type: 'GET',
      url: _url,
      dataType : 'script'
    });
});

Это моя функция javascript, которая вызывает файл с именем "specific_service.js.erb", который затем отображает частичную часть, называемую "specific_service". Дело в том, что я не знаю, правильно ли я использую var id.

1 ответ

Ты можешь использовать data- атрибуты для передачи произвольных значений элементу HTML:

link_to service.company.name,           # e.g. "ACME"
        '#',
        :class => 'specific_service', 
        :data => {:id => service.id}    # e.g. 12345

что приведет к примерно такому результату:

<a href="#" class="specific_service" data-id="12345">ACME</a>

это можно получить внутри Javascript, например, с помощью jQuery:

$('.specific_service').click(function() {
  var id = $(this).data('id');

  // now do something with the id
});

обратите внимание, что я использовал :class не :id потому что элемент может встречаться несколько раз.

Другие вопросы по тегам