HTML5 Audio Play / Get Request - Количество - Rails - PullRequest
0 голосов
/ 02 апреля 2012

В настоящее время я пытаюсь подсчитать количество прослушиваний конкретной песни.

В моем приложении rails слушается песня has_many. Я буду использовать счетчик приращений для обновления счетчика и думаю, что у меня есть хорошее представление о кеше счетчиков.

Моя проблема возникает, когда я понимаю, что именно считать или отслеживать. Я использую новый звук HTML5 с JS.

Видя, что пользователь хочет воспроизвести песню и делает GET-запрос на ее воспроизведение, как мне посчитать количество выполненных GET-запросов? Или я должен даже пытаться считать запросы?

Песня загружена с помощью скрепки

запрос сделан здесь:

<%= link_to 'Play Song', song_upload.song.url, :class => "html5" %>

и здесь играют:

$(document).ready(function() {  
var audioSection = $('section#audio');  
$('a.html5').click(function() {  

    var audio = $('<audio>', {  
         controls : 'controls'  
    });  

    var url = $(this).attr('href');  
    $('<source>').attr('src', url).appendTo(audio);  
    audioSection.html(audio);  
    return false;  
});  

});

По сути, пользователь нажимает кнопку «Воспроизведение песни», и песня воспроизводится через проигрыватель прямо над ним. Надеюсь, этого достаточно.

1 Ответ

1 голос
/ 03 апреля 2012

Я не думаю, что у вас должна быть модель для Слушателей, если только вам не нужно отслеживать, кто что слушал. В противном случае это может быть просто поле. Я напишу это как поле, но вы можете легко адаптировать его под свои нужды. Я просто не уверен, какие поля будет у Слушателя.

Внутри click () добавьте AJAX для отправки информации на ваш контроллер. Например:

$.ajax({
    url: '/increment.json',
    data: { "song_id" : "<%= @song.id %>"},
    async: false
});

Конечно, вам также придется добавить маршрут для этого.

match "increment.json" => "songs#increment"

И, наконец, ответьте на вызов в вашем контроллере Songs.

def increment
  Song.find_by_id(params[:id]).listens += 1
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...