1

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 全体の完全なオーバーホールが含まれるかどうかに関係なく、続行方法に関する提案をいただければ幸いです。

4

0 に答える 0