阅读http://api.rubyonrails.org/classes/ActionView/Helpers/PrototypeHelper.html后,我似乎找不到我要找的东西。我有一个简单的模型,在消息列表达到 24 条后删除最旧的消息,模型就是这么简单:
class Message < ActiveRecord::Base
after_create :destroy_old_messages
protected
def destroy_old_messages
messages = Message.all(:order => 'updated_at DESC')
messages[24..-1].each {|p| p.destroy } if messages.size >= 24
end
end
消息列表下方有一个消息表单,用于添加新消息。我正在使用 Prototype/RJS 将新消息添加到列表顶部。创建.rjs:
page.insert_html :top, :messages, :partial => @message
page[@message].visual_effect :grow
#page[dom_id(@messages)].replace :partial => @message
page[:message_form].reset
我的 index.html.erb 很简单:
<div id="messages">
<%= render :partial => @messages %>
</div>
<%= render :partial => "message_form" %>
添加新消息时,它们看起来很好,但是当达到 24 条消息限制时,它只会继续添加消息,不会删除旧消息。理想情况下,我希望它们随着新的添加而淡出,但它们可能会消失。create.rjs 中的注释行实际上有效,它删除了过期的消息,但在添加新消息时我失去了视觉效果。有没有人对如何完成从这个简单的列表中添加和删除消息以及对两者都有影响的建议?帮助将不胜感激。谢谢阅读。PS:periodic_call_remote 在这种情况下会有所帮助吗?