在Rails音乐应用程序中,我试图通过在网站访问者播放曲目时创建play
对象来为艺术家曲目计数播放。每个play
都有其自己的唯一ID并属于一个轨道。使用AJAX/Javascript创建Rails对象
目前,我在API中的plays_controller.rb
文件中设置了创建功能。但是,我无法将其连接到页面上的播放按钮,以便播放曲目实际上会创建属于该特定曲目的新播放对象。
用户可以播放使用按钮的应用程序的轨道是这样的:
<% @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来正确地创建一个新的游戏对象。我试着在上面的Javascript这添加到playTrack
功能:
$.ajax({
type: "POST",
url: '/api/v1/plays',
data: { track_id: trackId }
})
但它没有工作,给我的错误消息“参数未发现:玩”(这似乎从play_params
抛出在plays_controller.rb
创建操作)。
任何帮助获得这项工作将不胜感激。
'play_params'中有什么? – Nithin
@Nithin,我在第三个代码片段中展示了'play_params',一个来自'plays_controller.rb' – Andrew