在Rails中使用Ajax请求更新数据库

瑟夫·科尔多瓦诺(Seph Cordovano)

单击通知按钮时,它将向控制器发送一个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中,因为它是一个以用户为中心的操作,但是将其保留在活动控制器中没有任何问题。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在Django中使用AJAX更新数据库

来自分类Dev

无法在Codeigniter中使用Ajax更新数据库

来自分类Dev

jQuery:使用来自ajax请求的所有数据更新数据库

来自分类Dev

使用AJAX表单更新数据库

来自分类Dev

在Node.js中使用Jquery Ajax请求从数据库中删除

来自分类Dev

在页面刷新之前,Ajax请求不会更新数据库

来自分类Dev

在数据库更新后,如何使Rails使用Ajax更新HTML表行?

来自分类Dev

在数据库更新后,如何使Rails使用Ajax更新HTML表行?

来自分类Dev

当我在MVC的ModelState中使用Ajax更新数据库时

来自分类Dev

当我在MVC的ModelState中使用Ajax更新数据库时

来自分类Dev

在Codeigniter中使用jQuery Ajax更新数据库中的列

来自分类Dev

如何在Vue js中使用axios更新Rails api数据库中的记录?

来自分类Dev

在MySQL数据库中使用JDBC更新数据

来自分类Dev

使用ajax请求codeigniter处理数据库错误

来自分类Dev

使用请求元从scrapy更新数据库表

来自分类Dev

Ajax使用codeigniter更新数据库中的数据

来自分类Dev

在AJAX和Python数据库中使用JSON

来自分类Dev

在Rails生产中使用什么数据库?

来自分类Dev

在 Rails 中使用数据库中的 JSON 填充表

来自分类Dev

在Meteor中使用反应性MySQL数据库(更新?)

来自分类Dev

使用Ajax和Linq更新数据库

来自分类Dev

使用AJAX动态更新数据库中的文本

来自分类Dev

使用PHP和AJAX更新MySQL数据库

来自分类Dev

使用AJAX从引导模式更新数据库

来自分类Dev

使用ajax更新Mysql数据库表

来自分类Dev

使用ajax的数据库更新不起作用

来自分类Dev

codeigniter 使用 ajax 更新数据库然后显示

来自分类Dev

使用ajax调用更新数据库表

来自分类Dev

在更改时使用 AJAX 更新数据库表

Related 相关文章

热门标签

归档