2
<% @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 %>

因此,我列出了所有具有 id 的各种服务。link_to 显示执行“specific_service”javascript 功能的服务公司名称。但我希望它根据服务的 id 显示唯一的数据。如何将 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。

4

1 回答 1

5

您可以使用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因为该元素可以多次出现。

于 2013-11-13T16:40:39.040 回答