2015-03-19 3 views
1

Я использую Link_to для добавления некоторого контента на свою страницу с помощью ajax, но я только хочу, чтобы пользователь делал это один раз. Я делаю это, заменив ссылку на новый элемент html в файле js.erb. Это все работает отлично выглядит следующим образом:Rails link_to disable_with, а затем удалить ссылку

<%= link_to(expand_task_subset_user_path(user, li_id: li_id, span_id: span_id, user_tasks_to_expand_sym: user_tasks_to_expand_sym), 
    {:method => :get, remote: true, 'data-mahi-link-type'=>'expand_task_subset'}) do %> 
    <i class="glyphicon glyphicon-plus-sign" title="Expand this branch"></i> 
<% end %> 

js.erb фрагмент файла, который заменяет ссылку, созданную выше:

$("#<%[email protected]_id%> > a:has(i)").replaceWith("<i class=\"glyphicon glyphicon-minus-sign\" title=\"Collapse this branch\"></i>") 

Я заметил, что сегодня есть можно было нажать на ссылку дважды, прежде всего, в Файл js.erb был завершен, что означало, что он дважды вставлял другой контент. Я думал, что очевидный способ исправить это, чтобы добавить disable_with так:

<%= link_to(expand_task_subset_user_path(user, li_id: li_id, span_id: span_id, user_tasks_to_expand_sym: user_tasks_to_expand_sym), 
    {:method => :get, remote: true, 'data-mahi-link-type'=>'expand_task_subset', data: { disable_with: 'loading...' }}) do %> 
    <i class="glyphicon glyphicon-plus-sign" title="Expand this branch"></i> 
<% end %> 

Проблема (я думаю), что disable_with изменяет HTML временно и селектор JQuery $("#<%[email protected]_id%> > a:has(i)") не находит подходящих элементов для замены , Я попытался отключить ссылку в качестве первого оператора в файле js.erb, но если вы быстро, вы все равно можете победить его и дважды щелкнуть. Есть ли другой способ отключить ссылку сразу после нажатия?

Update: disable_with делает заменить содержимое «а» тега, так что я просто изменил мой селектор JQuery быть:

$("#<%[email protected]_id%> > a[data-mahi-link-type='expand_task_subset']") 

вместо того, чтобы искать для ребенка «я» тегов и теперь все прекрасно работает!

ответ

0

Что вы можете сделать, это использовать Jquery, чтобы отключить ссылку раз щелкнул, что-то вроде этого:

$('#Link').click(function(a) { 
    a.preventDefault(); 
    //other goods 
}); 
+0

К сожалению, это does't похоже на работу. Я где-то читал, что пульт: true останавливает jquery от unbinding/die. Мне, возможно, придется изучить это дальше, чтобы найти обходной путь ... –

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