2014-01-03 1 views
0

У меня есть приложение rails 4, которое использует загрузку. Моя навигационная панель выглядит следующим образом:Приложение Rails 4 - пытается обновить значения «значки» в навигационной панели с помощью AJAX и Javascript

[введите описание изображения здесь] [1]

Эти визуализированы с использованием частично вызывается из следующего кода в «раскладок/application.html.erb»

<div id="badge_refresh" class="container-fluid nav-collapse"> 
<%= render "layouts/badges"%> <%# partial _badges.html.erb %> 
</div><!--/.nav-collapse --> 

парциальное = "_badges.html.erb"

<ul class="nav nav-pills nav-stacked"> 
<li class="label label-info"><span class="badge pull-right"></span><%= link_to "Tasks", tasks_url %></li> 
<li>" "</li> 
<li class="label label-info"><span class="badge pull-right"><%= Upload.where.not(:status => [ 2, -1, 0]).count%></span><%= link_to "Uploads", uploads_url %></li> 
    <li>" "</li> 
    <li class="label label-info"><span class="badge pull-right"><%=Channel.all.count%></span><%= link_to "Channels", channels_url %></li> 
    <li>" "</li> 
...... 

Я добавил файл "refresh_badges.js.erb" со следующим содержанием:

$('#badge_refresh').html("<%= escape_javascript render 'layouts/badges' %>"); 

Эта настройка делает навигационную панель прекрасной. Однако то, что я пытаюсь сделать, это обновить значения значков каждые несколько секунд. Поэтому я пытаюсь понять, как это сделать, используя метод setInterval, который, как я знаю, способен делать опросы.

Мой вопрос в том, как будет выглядеть этот код и где его положить? Должен ли он быть помещен в «application.js»? или я должен создать новый файл в папке «javascripts».

Im новое для AJAX и рельсов, поэтому стараемся учиться здесь, делая. Любая помощь, которую вы, ребята, даете, будет большой благодарностью.

ответ

0
function refreshBadge(){ 
    $.ajax({ 
    url: '/controller/refresh_badges', 
    format: 'js' 
    }) 
} 

setInterval(refreshBadge, 1000); 

Это можно вызывать из application.js или application.html.erb

+0

Эй, спасибо, но URL не назовешь. Функция просто должна вызывать частичную функцию рендеринга каждые 1 секунду – banditKing

+0

@banditKing вам нужно иметь хотя бы пустые действия контроллера – arun15thmay

0

вы должны создать новый JS файл, как правило, в рельсах application.js используется в качестве файла манифеста

setInterval(function(){ 
$.ajax({url: "your url "}) 
},3000); 

Теперь рельсы делают refresh_badges.js.erb и обновить содержание

+0

Здесь нет URL-адреса, который нужно пинговать. Функция AJAX просто должна отображать частичный _badges.html.erb каждые 1 секунду. – banditKing

+0

, не поражая сервер, как вы думаете, чтобы получить информацию. –

+0

Хорошо, что вы, ребята. Извини, я новичок, я сейчас это понимаю. Благодарю. – banditKing