javascript-在Rails中使用Ajax请求更新数据库
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了javascript-在Rails中使用Ajax请求更新数据库,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2067字,纯文字阅读大概需要3分钟。
内容图文
单击通知按钮后,它将向控制器发送一个get请求,该请求应该将Activity.viewed从false更新为true.这样,我的js知道不会将其填充回通知计数中.所以:
我有一个ajax GET请求
// click EVENT TRIGGERS
$('#bell-notices').click(function(){
var $bell = $(this);
$bell.find('.notifications-count').hide('0');
$bell.parent().find('.dropdown-toggle').dropdown();
$.get('/activities/mark_activity_viewed', function( data ) {
});
});
被发送到Rails控制器
def mark_as_viewed
@mark = Activity.find_by(params[:id])
@mark.viewed = true
@mark.save!
end
似乎一切都准备就绪,但是我无法更新数据库.
Activity.last的控制台
<Activity id: 190, user_id: 68, action: "created", targetable_id: 157, targetable_type: "Status", created_at: "2015-03-04 21:17:57", updated_at: "2015-03-04 21:17:57", commentable_id: nil, reference_id: nil, viewed: false>
在这种情况下,user_id是创建活动的用户,而不是接收活动的用户.
解决方法:
不要使用$.get()进行更新数据的调用.而是通过PUT发送请求.由于您正在更新用户的所有活动,因此不需要执行Activity.find查找.我假设您的用户模型定义了“ has_many:activities”关联.您的JS如下所示(我正在使用coffeescript):
$('#bell-notices').click ->
$bell = $(this)
$bell.find('.notifications-count').hide '0'
$bell.parent().find('.dropdown-toggle').dropdown()
$.ajax
url: '/activities/mark_activity_viewed'
type: 'put'
(作为JS):
$('#bell-notices').click(function() {
var $bell;
$bell = $(this);
$bell.find('.notifications-count').hide('0');
$bell.parent().find('.dropdown-toggle').dropdown();
$.ajax({
url: '/activities/mark_activity_viewed',
type: 'put'
});
});
在您的activity_controller中,您将拥有:
def mark_activity_viewed
current_user.activities.update_all(viewed: true)
[any respond_to stuff you care to do...]
end
您需要在routes.rb中具有与“ put”匹配的路由
put 'activities/mark_activity_viewed' => 'activities#mark_activity_viewed'
请注意,上面的“ update_all”将跳过对Activity的验证,但是由于您在此处所做的只是更改布尔值,因此这不成问题.如果要对每个活动执行验证,请遍历它们并进行典型的更新并保存!
您将哪个控制器放进去实际上取决于您.我将其放在users_controller中,因为它是一个以用户为中心的操作,但是将其保留在活动控制器中没有任何问题.
内容总结
以上是互联网集市为您收集整理的javascript-在Rails中使用Ajax请求更新数据库全部内容,希望文章能够帮你解决javascript-在Rails中使用Ajax请求更新数据库所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。