当前位置: 首页 > 面试题库 >

Rails:如何在单击后使Jquery更新数据库列

宋建本
2023-03-14
问题内容

首先,我知道我想做的并不是Rails特有的。我愿意提出更好的替代方案。我是Rails的新手,欢迎提出建议:)

基本上,我有一个包含5条通知的通知栏。用户单击并查看通知后,我想在数据库中将名为seeed的列设置为true。

这是我的Jquery函数:

<script type="text/javascript">
            $(document).ready(function(){
              $("button").click(function(){
                    $("div#count").html("<%= escape_javascript(render('shared/notification_count')) %>");
              });
            });
</script>

这是我尝试仅在单击后执行的代码(位于_notification_count.html.erb中)

<% notification_ids =   current_user.notifications.map(&:id).join(', ')%>
<% sql = "UPDATE notifications SET SEEN = true where id IN(#{notification_ids})" %>
<% User.connection.select_all(sql) %>

但是,该代码似乎是在页面加载时而不是单击之后自动执行的。我怎么了


问题答案:

首先,您不能简单render地在按钮上附加a来更改数据库(无论是读取还是写入)。您必须使用类似方法向控制器发出AJAX调用

$.ajax({
    url: "/path/to/your/method",
    type: "GET",
    dataType: "script"
});

在您的控制器中,您将处理需要做的事情,然后使用

respond_to do |format|
    format.js {render 'shared/notification_count'}
end

这是因为当用户单击您的按钮时,该代码将在客户端执行,但是如果您从未向服务器发出请求,那么您将无法看到数据库的更新版本。我建议您阅读有关此内容的更多信息,对我有很大帮助。



 类似资料:
  • 我试图更新下载按钮点击数据库列。似乎很容易,但当我点击按钮数据库中的计数器不更新。 我不确定这是否是最佳和正确的方法,但这是我到目前为止所做的。 一个输入字段,用户从API中提取图像 当图像加载有显示按钮下载和用户可以下载它 另外,当用户搜索图像时,我会将搜索的内容保存在数据库中。这是我的控制器函数,用于将图像保存在数据库中的搜索字符串中。这很好用 这是下载时更新按钮单击的功能 视图中的按钮 路线

  • 问题内容: 发生更改时,如何检测对数据库的最新更新并以静默方式刷新页面? 假设数据库访问如下所示: 任何想法和样品将不胜感激。谢谢。 问题答案: 这就是我最近使用jQuery实现解决方案的方式。 每当发生 重大 更新时,PHP都会在数据库中增加一个字段。 最初加载页面时,使用数据库中的数字填充JavaScript变量:

  • 问题内容: 我已经阅读了一些有关我的问题的信息,但仍然没有得到正确的答案。我尝试了.on()方法仍然无法正常工作。我正在使用Laravel。 JS 加载页面后,我想要的所有东西都可以正常工作,但是当我使用replaceWith()方法更新元素,然后onclick无法正常工作时。 我检查了更新的html和属性,所有这些都在正确的位置。 问题答案: 您需要使用事件委托:- 因此更改::- 至::- 所

  • 全部的 只是想看看用表单中提交的数据更新数据库行的最佳选项是什么。我理解Laravel更新查询生成器,但是我在如何获取表单数据,然后执行该查询方面遇到了困难。相对较新的Laravel:)这是我想出的,只是从我的PHP经验和逻辑: 我曾试图将查询放入一个函数中,然后让表单操作成为函数: 正如我所说,主要问题是试图让命名的表单对象成为更新行的对象。我有两个文本输入字段,分别命名为“body”和“not

  • 问题内容: 我看到这对笨论坛 考虑以下代码 这显然是您在Codeigniter中这样做的方式 实际上这是行不通的。我看了一下生成的SQL,结果甚至没有提到联接。 有谁知道如何使用Codeigniter的Active Record数据库类对联接进行更新? 问题答案: 我发现的一种解决方案是完全删除联接并将联接条件移到“ where”函数中,此外,您还需要更改更新字符串以包括新表。

  • 我正在创建一个网站。于是,就有了一个表格给用户看。在我的数据库中,我在操作列下存储了0表示挂起,1表示已批准。如果某个用户有0,则此表中显示待定,如果用户有1,则显示已批准。现在我想当有人点击这个挂起按钮时,我想将数据库值更新为1。我尝试了如下。但是,当我点击挂起按钮,它给我这个错误- 而且我无法更新数据库值。 我怎样才能解决这个问题?? 查看页面(AdminPanel.blade.php) 控制