首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在rails上使用rails进行ajax调用时,在什么时候使用数据属性是错误的做法?

在rails上使用rails进行ajax调用时,在什么时候使用数据属性是错误的做法?
EN

Stack Overflow用户
提问于 2012-05-22 20:00:49
回答 1查看 181关注 0票数 3

我的问题来自导航链接/无休止的滚动.

我已经包括了一个“删除”按钮,为每个微信。当按下该按钮时,将对服务器进行ajax调用,删除微博,并从DOM中删除div。

比方说我第一页上有1到10条微博,第二页有11到20条,比如我删除了第一页的第1、2和3项。那就滚动唐顿。服务器将“重新计算”微信;由于我删除了前一个列表中的3个,它将返回项目13至22。换句话说,微博10、11和12不会出现在第一页或第二页。

在堆栈溢出搜索之后,我找到了一个解决方案:

每当我从列表中删除一个微博时,我就会在页面上的最后一个微博之后加载微博,并将其插入页面底部。

当前如何处理修复程序:

默认情况下,我使用will_paginate gem在页面上显示10条微博。我需要知道在任何时间显示的任何微信的id。为此,我将其存储在容纳每个微信的容器的开头div标记中:

代码语言:javascript
复制
<% @microposts.each do |m| %>
     <div class="postHolder" data-micropost-id="<%= m.id %>">

--我在microposts.js资产文件中这样访问它:

代码语言:javascript
复制
$(function() {

     $('.message_delete').on('ajax:success', function(event, data, status, xhr){
          console.log(data); //to check if json is working
          console.log($('.postHolder').last().data('micropost-id'));
     });
});

这里是我的控制器销毁操作:

代码语言:javascript
复制
def destroy
    micropost = Micropost.find(params[:id])
       respond_to do |format|   
         micropost.destroy
       format.json  { render :json => micropost } #just to check if json is working
    end
end

现在我知道了每个微博的ID,所以当一个帖子被删除时,我使用一个jquery选择器来细化页面上的最后一个.postHolder div,获取ID,然后使用这个ID来获取它后面的微博,然后在它后面插入那个微博。这样,当消息被删除时,就会自动追加消息。

如果用户碰巧滚动以加载更多的消息,则不会丢失任何消息。我看过一些铁路,并看到Ryan使用数据属性做了类似的事情,并阅读了一些关于这些属性的内容,并且似乎得到了这样的印象--这是一种糟糕的做法。

我试着想出其他的方法来做这件事,但是除了这样做我什么都想不出来,感觉有点奇怪。也许这一切都在我的脑海里,但如果可能的话,我想要另一个更好的解决方案。

谢谢

亲切的问候

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-05-23 09:26:10

您可以使用一个变量来跟踪当前页面上的微博数量。无论何时删除post,都要减少此变量。每当您获取新的posts页面时,请将此变量重置为默认值(为10)。

当您获取一个新的10个帖子时,数据库的偏移量将是(假设您的请求第3页的微博,并且您已经删除了第2页4)。

代码语言:javascript
复制
(3 * 10) - (4) == 26

第3页上的第一个微型邮件现在将是微型邮件id 26。

假设我已经理解了你的问题,那就是!

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10709294

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档