В музыкальном приложении Rails я пытаюсь подсчитать пьесы для треков исполнителей, создав объект play
, когда посетитель сайта воспроизводит дорожку. Каждый play
имеет свой уникальный идентификатор и принадлежит к треку.Создать объект Rails с AJAX/Javascript
В настоящее время у меня есть функция создания, созданная в файле plays_controller.rb
в API. Однако у меня возникают проблемы с подключением к кнопкам воспроизведения на странице, так что воспроизведение трека фактически создает новый игровой объект, принадлежащий этому конкретному треку.
Пользователи могут играть треки в приложении с помощью кнопок, как это:
<% @top_tracks.each do |track| %>
<button class="track-play track-<%= track.id %>-play" onclick="playTrack(<%= track.to_json %>)">
<i class="icon-play"></i>
</button>
...
[info about the track, such as <%= track.title %>]
...
<% end %>
Вот соответствующие части файла routes.rb
, чтобы показать, где plays_controller.rb
находится в API:
namespace :api, defaults: {format: 'json'} do
namespace :v1 do
resources :plays, only: [:index, :create]
end
end
Вот соответствующие части файла plays_controller.rb
:
def create
@play = Play.create!(play_params)
render(:json => {}, :status => :created)
end
private
def play_params
params.require(:play).permit(:track_id)
end
А вот соответствующие части соответствующего Javascript:
var player = document.getElementById('audio');
window.playTrack = function (track) {
player.setAttribute('src', track.file_url);
player.play();
var trackId = track.id;
};
Я не уверен, как использовать AJAX, чтобы правильно создать новый объект воспроизведения. Я попытался это добавление к функции playTrack
в Javascript выше:
$.ajax({
type: "POST",
url: '/api/v1/plays',
data: { track_id: trackId }
})
Но это не сработало, и дал мне сообщение об ошибке «PARAM не найдено: играть» (который, казалось, выброшен из play_params
в действии plays_controller.rb
).
Любая помощь, получающая эту работу, будет высоко оценена.
Что находится в 'play_params'? – Nithin
@ Нить, я показал «play_params» в третьем фрагменте кода, один из «play_controller.rb» – Andrew