javascript - Ajax 不更新数据库中的属性
问题描述
Ajax 不会在完整观看课程后更新查看的属性。
应用程序.js:
$('#video').onended(function() {
$.ajax({
url: '/courses/:id/lessons/:id/viewed',
type: 'patch'
});
});
课程控制器;
def viewed
@lesson = Lesson.find(params[:id])
@lesson.update_attribute(:viewed, true)
end
课程/show.html.erb:
<h2><%= @lesson.name %></h2>
<div id="video">
<video controls="true" width="auto" height="auto">
<source src="<%= url_for(@lesson.file) %>" type='video/mp4'>
</video>
</div>
配置/路由.rb:
patch 'courses/:id/lessons/:id/viewed' => 'lessons#viewed'
add_view_to_lessons 迁移:
def change
add_column :lessons, :viewed, :boolean
end
解决方案
我会做这样的事情:
路线.rb
resources :lessons do
member do
patch :viewed
end
end
- 使用 rails helpers,它将帮助您在段、变量、named_routes 等的顺序上保持一致
显示.html
<h2><%= @lesson.name %></h2>
<div id="video" data-viewed-url="<%= viewed_lesson_path(@lesson) %>">
<video controls="true" width="auto" height="auto">
<source src="<%= url_for(@lesson.file) %>" type='video/mp4'>
</video>
</div>
- 我将 URL 作为
#video
元素的数据属性传递,所以我不必用 javascript 来处理 URL,让 rails 处理这些事情,它真的很擅长
js
$('#video').onended(function() {
$.ajax({
url: this.dataset.viewedUrl,
type: 'patch'
});
});
- 从元素的数据属性中获取 URL
推荐阅读
- python-3.x - pd.notna (pandas 0.24.2) 是否有任何替代方案。它在熊猫 0.20.1 中不起作用?
- python - 从熊猫列中删除重复的单词
- mongodb - 如何在kafka中为日期提供字段类型支持
- swift - 如何在 swift4 中显示 GMSPolygon 的标题
- bitbucket - 如何删除不再存在但在 mecurial 历史中的目录
- websocket - 端口超出范围:-1 用于通过 WSO2 API 管理器的 Web Socket API
- javascript - 我可以将我的 node_modules 文件夹移动到另一个项目吗?
- sql - 如果在 select 语句中匹配 id,则替换 null 信息
- github - 为什么 Github 代码文件没有完全显示
- aws-lambda - 设置 VPN 以将 VPC 连接到家庭网络?