如何在 RJS 中找到具有最旧的 Updated_at 列的对象?

发布于 2024-08-25 04:30:16 字数 713 浏览 13 评论 0原文

我试图在执行 rjs 时删除具有最旧的 Updated_at 值的对象。

page.insert_html :top, :messages, :partial => @message
page[@message].visual_effect :grow
page[:message_form].reset
Message.old_messages.each do |m|
  page.remove(m.id)
end
page.delay(1) do 
  page.select('.message').last.visual_effect :fade
end

我现在正在那里使用 .last ,但我在视图中有一个 periodical_call_remote ,它不断更新并运行上面的 rjs 。该行:

page.select('.message').last.visual_effect :fade

似乎只在第一次执行,因为在“最后”消息消失后​​,不再有任何内容被识别为“最后”,所以我认为我可以找到具有最旧的 update_at 时间戳的对象,而不是调用 .last只需删除它即可。我想我可能无法使用 page.select 来做到这一点,因为它只调用 css 元素。因此我可能无法访问消息模型中的 Updated_at 值。有人对如何使用 rjs 删除最旧的消息有建议吗?当创建新消息时,模型中的消息已自动删除。但我希望它们在 RJS 刷新元素时自动消失。

I'm trying to remove the object with the oldest updated_at value when the rjs is executed.

page.insert_html :top, :messages, :partial => @message
page[@message].visual_effect :grow
page[:message_form].reset
Message.old_messages.each do |m|
  page.remove(m.id)
end
page.delay(1) do 
  page.select('.message').last.visual_effect :fade
end

I'm using .last in there right now, but I have a periodically_call_remote in the view that continually updates and runs the rjs above. The line:

page.select('.message').last.visual_effect :fade

seems to only execute the first time because after the message that is "last" fades away there's nothing recognized as "last" anymore so I figure instead of calling .last I could find the object that has the oldest updated_at time stamp and just remove that instead. I'm thinking that I probably cannot do this using page.select since it only calls on css elements. And therefore I probably don't have access to the updated_at values in the Message model. Does anyone have a suggestion on how to accomplish removing the oldest message with rjs? The messages are already automatically removed in the model as new messages are created. But I want them to fade automatically when the RJS refreshes the element.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

热鲨 2024-09-01 04:30:16

您的解决方案可能就像删除褪色的元素一样简单。

我的猜测是淡入淡出视觉效果隐藏了该元素,但不会将其从 DOM 中删除,因此最终发生的情况是您将继续淡入淡出同一元素,但它显然不会执行任何操作。

Your solution could be as simple as removing the element that you faded.

My guess is the fade visual effect hides the element but doesn't remove it from the DOM, so what ends up happening is you will continue to fade the same element which obviously doesn't do anything.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文