在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