您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

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

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

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

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

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

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

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

解决方法

首先,我知道我想做的并不是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) %>

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

喜欢与人分享编程技术与工作经验,欢迎加入编程之家官方交流群!
respond_to do |format|
    format.js {render 'shared/notification_count'}
end
@H_502_7@

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

解决方法

首先,我知道我想做的并不是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) %>

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

喜欢与人分享编程技术与工作经验,欢迎加入编程之家官方交流群!
<script type="text/javascript">
            $(document).ready(function(){
              $("button").click(function(){
                    $("div#count").html("<%= escape_javascript(render('shared/notification_count')) %>");
              });
            });
</script>
<% notification_ids =   current_user.notifications.map(&:id).join(',')%>
<% sql = "UPDATE notifications SET SEEN = true where id IN(#{notification_ids})" %>
<% User.connection.select_all(sql) %>

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

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

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

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

这是我的Jquery函数:

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

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

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

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

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

解决方法

首先,我知道我想做的并不是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) %>

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

喜欢与人分享编程技术与工作经验,欢迎加入编程之家官方交流群!
<script type="text/javascript">
            $(document).ready(function(){
              $("button").click(function(){
                    $("div#count").html("<%= escape_javascript(render('shared/notification_count')) %>");
              });
            });
</script>
<% notification_ids =   current_user.notifications.map(&:id).join(',')%>
<% sql = "UPDATE notifications SET SEEN = true where id IN(#{notification_ids})" %>
<% User.connection.select_all(sql) %>

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

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

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

这是我的Jquery函数:

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

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

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

JS 2022/1/1 18:42:05 有387人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶