2013-11-13 8 views
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 %> 

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

EDIT

$('#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' 
    }); 
}); 

Это моя Java-функция, которая вызывает файл с именем «specific_service.js.erb», который будет затем вынести частичное под названием 'specific_service. Дело в том, что я не знаю, правильно ли использую var id.

+0

Я не совсем уверен, что вы просите. Но если вы хотите отправить данные контроллеру, передайте его как параметр запроса – usha

+0

, чтобы вы знали, как вы обычно передаете параметры для URL-адресов (т. Е. Some_path (@object)). Я, по сути, хочу сделать то же самое, кроме того, что я не перейду к определенному пути, я просто перезагружаю текущую страницу. Поэтому в псевдокоде я хочу сделать что-то вроде «# <% = service.id%>» в качестве пути, чтобы контроллер мог использовать идентификационную информацию. –

ответ

3

Вы можете использовать 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, потому что элемент может встречаться несколько раз.

+0

, но функция javascript должна быть указана с использованием: id => 'specific_service', иначе это не сработает. –

+0

Множественные вхождения одного и того же идентификатора HTML являются недопустимой разметкой. Некоторые браузеры могут интерпретировать это так, как вы ожидали, другие нет. Это может нарушить вашу функциональность, например. событие click может быть добавлено только к одной из ссылок или нет, если вам не повезло. Вы никогда не узнаете, работает ли ваше приложение. Что значит «должно» быть таким? –

+0

Я отредактировал мой вопрос для получения дополнительной информации. возможно, это поможет очистить вещи до –

Смежные вопросы