Rails アプリを Rails 3.1 にアップグレードしたので、Rails アプリで失敗したテストのクリーンアップに取り組んでいます。
私のアプリには、クライアントとプロバイダーがプロジェクトに関するプライベート メッセージを相互に交換できるメッセージング機能があります。
ユーザーの受信トレイには、メッセージのリストと各メッセージの横にあるチェックボックスが表示されます。チェックボックスをオンにすると、メッセージに削除のマークを付けてmessages#add_remove_message/id
アクションを「配置」する js/ajax インラインがあります。
<%= check_box_tag('id', 'id', false, :onclick => remote_function( :url => { :action => :add_remove_message, :id => message.id, :method => :put } )) %>
もちろん、remote_function は Rails 3.1 で廃止されたので、このコードを目立たない JavaScript のアプローチに置き換える必要があります。ほとんどのチュートリアルで:remote => true
は、remote_function を取り除くための一般的な方法は using であると説明data-href
されています。しかし、これは check_box_tag には当てはまらないようです。
ここで進める最善の方法は何ですか? ユーザーがページをリロードせずに受信トレイメッセージを簡単にアーカイブできるようにする ajax-y の方法が必要です。既存の add_remove_message メソッドをそのままにしておくことができればいいのですが、全体的な解決策が改善されるのであれば、喜んでそれを捨てて別のものを使用します。
現在の add_remove_message メソッドは次のようになります。
def add_remove_message
add_remove_ids = Array.new
unless cookies[:add_remove].empty?
add_remove_ids = cookies[:add_remove].split('|')
end
if add_remove_ids.include? params[:id]
add_remove_ids.delete params[:id]
else
add_remove_ids << params[:id]
end
cookies[:add_remove] = add_remove_ids*'|'
render :nothing => true
end
これは、このメッセージング モジュールに取り組んだ以前のフリーランス開発者のレガシー コードです。私はそれに固執していません(ただし、それが何をするかをほとんど理解しているという利点があります!)
構文の単純な変更、jQuery プラグイン、またはメッセージ削除 UI 全体の完全なオーバーホールが含まれるかどうかに関係なく、続行方法に関する提案をいただければ幸いです。