使用AJAX/Javascript创建Rails对象
Create Rails object with AJAX/Javascript
在Rails音乐应用程序中,我试图通过创建一个play
对象来计算艺术家的曲目,当访问者访问该网站时播放曲目。每个play
都有自己唯一的ID,并属于一个轨道。
目前,我在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 }
})
但它不起作用,给了我错误信息"param未找到:play"(这似乎是从plays_controller.rb
创建操作中的play_params
抛出的)。
如果有任何帮助,我将不胜感激。
Rails期望参数是嵌套的,例如play的track_id应该命名为play[track_id]
。您可以通过在AJAX数据中包含一个play对象来解决这个问题,如下所示:
$.ajax({
type: "POST",
url: '/api/v1/plays',
data: { play: { track_id: trackId } }
})
相关文章:
- Rails将JavaScript对象存储到Model的有效方式
- Rails 'nil' 不是与 ActiveModel 兼容的对象.它必须实现:to_partial_path.阿贾克斯
- Rails的问题,haml + javascript在字段对象的模糊
- 如何使用rails 3.1.4中的FormBuilder.new构建表单生成器对象
- Rails使用ajax调用更新多态对象的表部分
- Rails:如何将JS对象转换为数组参数
- Rails结构到JSON对象
- 访问Javascript中的Rails子对象
- 对象不支持此属性或方法 Rails Windows 64 位
- 一个 rails 字段,它是 JSON 对象的数组
- Rails JavaScript 包含 TypeError:“null”不是一个对象(评估 'document.
- “未定义”使用 Rails 对象传递数据属性
- Rails:如何使用 JavaScript 滑块显示 ActiveRecord 对象
- 使用jquery检查rails对象
- 如何在javascript中访问当前rails对象id
- 如何使用rails对象在选择下拉列表中设置选项的值's的id
- 将从sql数据库检索到的ruby on rails对象存储到javascript对象中
- 使用AJAX/Javascript创建Rails对象
- 你能调用Jbuilder来创建一个原生Rails对象而不是一个呈现的字符串吗?
- JSON对象转换为rails对象