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を使用していますが、上記のrjsを継続的に更新して実行するビューに、periodic_call_remoteがあります。この線:

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

「最後」のメッセージが消えた後、「最後」として認識されるものがなくなったため、最初にのみ実行されるようです。.lastを呼び出す代わりに、.lastを呼び出す代わりに、最も古いupdated_atタイムスタンプを持つオブジェクトを見つけて、それを削除することができます。代わりは。css要素のみを呼び出すため、page.selectを使用してこれを行うことはおそらくできないと思います。したがって、メッセージモデルのupdated_at値にアクセスできない可能性があります。誰かがrjsで最も古いメッセージを削除する方法について提案がありますか?新しいメッセージが作成されると、メッセージはモデルからすでに自動的に削除されます。しかし、RJSが要素を更新するときに、それらを自動的にフェードさせたいのです。

4

1 に答える 1

1

あなたの解決策は、あなたが色あせた要素を取り除くのと同じくらい簡単かもしれません。

私の推測では、フェード視覚効果は要素を非表示にしますが、それをDOMから削除しないので、最終的には同じ要素をフェードし続けますが、明らかに何もしません。

于 2010-03-11T05:56:58.937 に答える