Ajax 删除链接 注销current_user

2024-03-28

标题几乎解释了这一点。我遇到了一种奇怪的情况,允许用户使用 Ajax 删除通知的视图会导致 current_user 被注销。我什至不知道从哪里开始调试这个......

这是控制器

class NotificationsController < ApplicationController

    def destroy
        @notification = Notification.find(params[:id])
        @notification.destroy
        respond_to do |format|
            format.js
        end
    end


end

这是整个控制器,没有任何删减。通知由系统生成,因此用户可以采取的唯一操作就是“关闭”(即删除)它们。

我也尝试过使用较新的respond_with语法并具有相同的效果。

我正在使用 Devise 和 Rails 3.0.9。知道会发生什么吗——或者关于如何调试的建议?

-- 编辑 1 --

路线.rb

resources :notifications, :only => [:destroy]

删除链接

%span.delete= link_to( 'dismiss', notification_path(notification), :method => :delete, :remote => true )

-- 编辑 2 --

好吧,我在日志中注意到了一些新内容——请参阅下面的****。

Started DELETE "/notifications/10" for 127.0.0.1 at 2011-06-21 21:47:15 -0500
  Processing by NotificationsController#destroy as JS
  Parameters: {"id"=>"10"}
  SQL (0.4ms)   SELECT name
 FROM sqlite_master
 WHERE type = 'table' AND NOT name = 'sqlite_sequence'
  SQL (0.3ms)   SELECT name
 FROM sqlite_master
 WHERE type = 'table' AND NOT name = 'sqlite_sequence'

  User Load (0.7ms)  SELECT "users".* FROM "users" WHERE "users"."id" = 1 LIMIT 1
  Slug Load (0.4ms)  SELECT "slugs".* FROM "slugs" WHERE ("slugs".sluggable_id = 1 AND "slugs".sluggable_type = 'User') ORDER BY id DESC LIMIT 1
  ****AREL (0.3ms)  UPDATE "users" SET "remember_token" = NULL, "remember_created_at" = NULL, "updated_at" = '2011-06-22 02:47:15.913839', "preferences" = '---
:email_notifications: ''true''
' WHERE "users"."id" = 1
  Notification Load (0.2ms)  SELECT "notifications".* FROM "notifications" WHERE "notifications"."id" = 10 LIMIT 1
  User Load (1.0ms)  SELECT "users".* FROM "users" WHERE "users"."id" = 1 LIMIT 1
  AREL (0.3ms)  UPDATE "users" SET "notifications_count" = COALESCE("notifications_count", 0) - 1 WHERE "users"."id" = 1
  AREL (0.1ms)  DELETE FROM "notifications" WHERE "notifications"."id" = 10
Rendered notifications/destroy.js.erb (0.7ms)
Completed 200 OK in 6416ms (Views: 9.6ms | ActiveRecord: 4.1ms)

所以,看起来用户表的一部分被设置为空,特别是我怀疑正在触发 Devise 结束会话的 Remember_token,或者这可能是在会话被销毁后由 Devise 完成的。但我该如何追踪呢?

我能想到的唯一导致通知与用户交互的事情是有一个counter_cache关于用户notifications_count.

我很欣赏有关如何调试的想法和建议!

-- 编辑 3 --

使用 ruby​​-debug 进行挖掘后,看起来问题与 Devise 和对rails.js 脚本的更改有关。看:

https://github.com/plataformatec/devise/issues/913 https://github.com/plataformatec/devise/issues/913

https://github.com/ryanb/cancan/issues/280 https://github.com/ryanb/cancan/issues/280

我正在尝试这些线程上的一些建议,如果找到解决方案,我会发布。


我有类似的问题。解决方案就像添加一样简单

<%= csrf_meta_tag %>

到布局。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Ajax 删除链接 注销current_user 的相关文章

  • 具有多个可选参数的 Rails 3 路线

    我正在尝试创建一个具有可选参数和不同顺序的 Rails 路线 这个问题描述了一个类似的问题 具有多个 可选且漂亮参数的路由 https stackoverflow com questions 14007593 routes with mul
  • 使用 Jasmine 模拟 jQuery ajax 调用

    我正在使用 Jasmine 2 5 2 为使用 jQuery 3 1 1 执行 Ajax 请求的代码编写单元测试 我想模拟 Ajax 调用 提供我自己的响应状态和文本 我正在使用 Jasmine ajax 插件 https github c
  • XMLHttpRequest、jQuery.ajax、jQuery.post、jQuery.get 之间有什么区别

    我如何找出最适合某种情况的方法 有人可以提供一些例子来了解功能和性能方面的差异吗 XMLHttpRequest是原始浏览器对象 jQuery 将其包装成更可用和简化的形式以及跨浏览器一致的功能 jQuery ajax是 jQuery 中的通
  • 新手:我的例子中的文本替换

    In my 红宝石 on Rails应用程序中 我的助手中有一个方法 它通过以下方式打开文件 content File open myfile txt The 文件内容就好像 my car my seat my age my son my
  • 如何在 Rails 中制作动态下拉菜单?

    我正在开发一个电子商务项目 其中将有用于选择尺寸的单选按钮 我有一个数量下拉菜单 我想根据用户所选尺寸的可用库存使此下拉列表动态化 谁能告诉我如何在 Rails 上做到这一点 不会用大量的 javascript 扰乱我的视图文件 如果您使用
  • 从 Facebook 重定向 URL 中删除“#_=_”[重复]

    这个问题在这里已经有答案了 根据https developers facebook com blog post 552 https developers facebook com blog post 552 FB Graph API 现在附
  • 如何在 Rails 2.3.5 中从模型渲染部分

    我有一个 Rails 2 3 5 应用程序 我试图从模型中渲染几个部分 我知道 我知道 我不应该这样做 我这样做的原因是我将 Comet 服务器 APE 集成到我的 Rails 应用程序中 并且需要根据模型的事件 例如 after crea
  • Rails 的 Puma Systemd 配置不起作用

    我已经完成了一个使用 Ruby on Rails 构建的应用程序 现在我想将其托管在 AWS 上的 EC2 实例上 我已经为其配置了服务器 并且正在使用pumaHTTP服务器作为应用服务器 在生产中启动应用程序总是需要我运行RAILS EN
  • 在 Rails 3 和 ActionMailer 中,是否可以使用 TLS over SSL(不是 StartTLS)发送电子邮件?

    我想使用 ActionMailer 从我的铁路应用程序发送电子邮件 我有一个想要使用的现有邮件服务器 但它仅支持端口 465 上的 SSL TLS 但是 它不支持 StartTLS 通常在端口 587 上 谁能建议一种实现这一目标的方法 据
  • 使用“回形针”gem 和 Ruby on Rails 3 时出现问题

    我在运行 Snow Leopard v1 6 5 的 MacO 上使用 Ruby on Rails 3 我想使用 回形针 gem 所以我将它包含在我的 Gemfile 中 如下所示 gem paperclip gt 2 3 然后 在终端中运
  • 如何编写运行 Rails db:migrate 任务的 rake 任务?

    我想运行 db migrate VERSION 0 然后在我自己的 rake 任务中运行 db migrate 我对如何做到这一点感到困惑 我需要特殊的要求声明吗 我的 rake 任务将驻留在 Rails 应用程序的 lib tasks 目
  • 使用XMLHttpRequest自动网页刷新内存泄漏

    问候 我一直在为一些使用 8 位微控制器的硬件开发网络界面 该网页使用 HTML javascript JSON 和 XHR XMLHttpRequest 进行通信 我想做的是创建一个页面 使用 setInterval 使用控制器中的新值每
  • 通过 AJAX jquery 更改表格背景颜色?

    设想 当我的网页加载时 自动搜索单元格已由用户输入并且具有价值 如果已输入 表格背景颜色将为红色 否则为绿色 假设该表尚未输入 桌子背景绿色是这样的 和表的源代码 table width 1023 height 200 border 1 t
  • Heroku:无法通过 Bundler 安装 gem

    我尝试使用以下命令将我的 Rails 应用程序推送到 Herokugit push heroku master f命令 我得到这个 Total 0 delta 0 reused 0 delta 0 remote Compressing so
  • 在 Django 中处理 ajax json 对象 - 'QueryDict' 对象没有属性 'read' 错误

    我正在尝试解析 Django 视图中的 json 对象 该对象已通过 ajax 通过 post 方法从客户端传递过来 JS post update vendor merchandise types JSON stringify json o
  • ActiveSupport::TimeWithZone#to_date 返回错误日期

    我想要以下实例的日期部分ActiveSupport TimeWithZone 我用了to date函数 但它返回前一天的日期 例如 如果日期时间是2012 04 11 09 05 00 UTC 如果我打电话to date然后它返回2012
  • 使用ajax发送表单数据

    我想用 ajax 以表单形式发送所有输入 我有一个这样的表单
  • 查询参数和assert_generates/assert_routing - 我缺少什么?

    我想我已经介绍了使用查询参数测试路由的排列 但没有一种方法通过 在我的 paths rb 中 我有以下内容 resources items 然后对于我的功能测试我有 require ruby debug require test helpe
  • RubyMine 不能使用 Guard 吗?

    由于某些无法解释的原因 RubyMine 会自动保存您所做的每一个更改 因此每次击键都会触发 Guard 运行您的测试 最可笑的是 显然没有办法禁用这个自动保存 功能 我只是想知道 RubyMine 似乎是 Rails 开发人员中非常流行的
  • Cakephp - CSRF 令牌不匹配

    我在 Cakephp 3 6 中有一个项目 其中 MessageController 中的 3 个操作由 Ajax 调用 但是 我有一个问题 当我向其中一个操作发送请求时 XHR 会向我返回以下内容 message CSRF token m

随机推荐

  • Qt 单例实现

    我正在寻找 Singleton Qt 实现并发现this https wiki qt io Qt thread safe singleton 但我对此有一些疑问 制作的目的是什么create a QBasicAtomicPointer 重点
  • 使用 ScikitLearn 的神经网络实现时出现的问题

    我正在尝试使用 Scikit Learn 提供的神经网络实现来实现图像处理 我有近 10 000 张 JPG 格式的彩色图像 我将这些图像转换为 PNG 格式并删除了颜色信息 新图像都是黑白图像 将这些图像转换为矢量格式后 这些图像矢量形成
  • Pascal 支持向函数传递参数吗?

    我是 Pascal 新手 我正在尝试编写一个简单的程序 但在函数之间传递值时遇到问题 这是我所拥有的一小部分 program numberConverter const maxValue 4999 minValue 1 var num in
  • @echo 在cmd中关闭

    我正在尝试编写一个 BAT 脚本 我有以下内容 echo off REM Comments here SETLOCAL ENABLEDELAYEDEXPANSION set PROG ROOT C Prog set ONE 1 echo 1
  • .htaccess文件自动修改

    我有由 WordPress 提供支持的网站 并且 WordPress 根文件夹中也有 html 文件 因为 WordPress 不允许 html 文件 我编写了 htaccess 代码来打开 html 文件以及 WordPress 页面 但
  • 使用 python-ldap 向 Active Directory 进行身份验证始终返回 (97, [])

    如同这个问题 https stackoverflow com questions 140439 authenticating against active directory using python ldap 我尝试使用 python l
  • 将引用单元格公式添加到代码中

    在此输入图像描述 https i stack imgur com 48OqU jpg 这就是输出 https i stack imgur com FCqOg jpg 我在单元格 C1 中有这个公式 用于平均第 2 列中的值相对于第 1 列的
  • rake 数据库适配器与database.yml不一致

    In database yml rails 生成的默认文件 default default adapter sqlite3 pool 5 timeout 5000 development lt lt default database db
  • 无法与 aSmack 4.0.2 建立新连接

    我正在学习 Android 编程 这几天我一直在努力解决这个问题 我正在编写一个应该连接到 XMPP 服务器的 Android 应用程序 我总是遇到同样的错误 并且真的不知道我做错了什么 我尝试过通过谷歌找到的示例代码 但也无法与它们建立连
  • 循环遍历 PL/pgSQL 中给定的值列表

    我试图循环遍历几个字段并在它们上运行一个函数 FOR field IN ARRAY f1 f2 LOOP execute pg temp converFieldToLower newTableNameRaw field END LOOP 这
  • 监视单元格值并将其复制到另一个单元格

    我想知道如何监视单元格值并使该值始终在其他单元格上更新 到目前为止 我一直在使用 符号 然后选择我想要监视的单元格 问题是我正在监视的行 单元格由于另一个 vba 脚本而不断更新 当发生这种情况时我得到REF error e g On th
  • 将变量值从第二个 PowerShell 脚本返回到第一个 PowerShell 脚本?

    我创建1 ps1调用的脚本2 ps1脚本 打电话后2 ps1它给出了一些结果 variable 我要这个 variable结果将在我的中使用1 ps1用于操纵 csv Get Content 10 46 198 141 try window
  • matplotlib 两种颜色之间的颜色渐变

    我想要 matplotlib 中黑色和红色之间的颜色渐变 其中低值是黑色 随着 Y 值的增加而变得越来越红色 import matplotlib pyplot as plt xvals np arange 0 1 0 01 yvals xv
  • 使用 str_extract_all 查找多个字符串

    我有一个字符串列表 如下所示 tofind lt c aaa bbb ccc ddd 我还有一个向量如下 n lt c aaabbb aaa aaacccddd eee 我想找到我的所有匹配项tofind字符串 以便输出应该是 aaa bb
  • 如何使用 dcpcrypt 在 delphi 和 php 之间同步加密

    我正在使用 Delphi 2009 我在这里看到的大多数答案都是针对 2010 我正在尝试将加密 delphi 同步到解密 php 并且失败 在delphi中生成加密字符串 program Project4 APPTYPE CONSOLE
  • 带键的 array_pop()

    考虑以下数组 array array fruit gt apple vegetable gt potato dairy gt cheese 我想用数组弹出 http php net manual en function array pop
  • 从 matplotlib 轴对象获取数据

    我正在尝试确定 matplotlib 上的数据点axes http matplotlib org api axes api html matplotlib axes 是否有我缺少的属性Axes http matplotlib org api
  • 被释放的指针未分配[Swift]

    我正在尝试读取 TCP 套接字连接中的长字符串 对于读取短长度字符串 它工作正常 但是当我尝试发送长长度的 base64 编码图像时 它崩溃了 我尝试增加到maxReadLength 10000 但仍然不起作用 读取传入消息 private
  • 在转储文件上使用 pg_restore

    我在 Heroku 上有一个数据库 我正在尝试将其复制到本地计算机 我通过执行以下操作创建了数据库的备份 heroku pgbackups capture 这将创建一个数据库的转储文件 我通过创建指向该数据库的 URL 链接来下载该文件 h
  • Ajax 删除链接 注销current_user

    标题几乎解释了这一点 我遇到了一种奇怪的情况 允许用户使用 Ajax 删除通知的视图会导致 current user 被注销 我什至不知道从哪里开始调试这个 这是控制器 class NotificationsController lt Ap