0

私のアプリでは、いくつかのオブジェクトにゴミ箱を実装しようとしています。つまり、「ゴミ箱」列があり、オブジェクトがゴミ箱に入れられた日付に設定されます。Trash には、ユーザーがオブジェクトを復元できるインデックス ページもあります。「trashed」を nil に設定します。

メソッドのごみ箱を使用したモデルの例を見つけました! 、そのセットはこれまでに破棄され、懸念事項で実装されました。しかし、アクションto_trashでコントローラーを実装する方法がよくわかりませんか? コントローラーでも懸念を使用する方法はありますか、またはすべてのコントローラーに独自のアクションとそれを呼び出すためのルートが必要ですか?

アクション move_to_trash を持ち、すべてのコントローラーがこのアクションを使用するコントローラー Trash で実装しましたが、これを行うには get params Trashable_id と Trashable_type を追加する必要があります。それは物事を行う良い方法ですか?

4

1 に答える 1

0

routes.rb最も簡単な実装は、ファイルに次を追加することだと思います。

match ':controller/:id/trash', :action => :trash

これにより、すべてのコントローラーでアクションのゴミ箱を使用できるようになります。その他の例については、Routing Rails Guideをご覧ください。

簡単な実装は次のとおりです (モデルReportを例として取り上げます)。ここでは使用しませんConcern:

class ReportsController < ApplicationController
  def trash
    @report = Report.find(params[:id])
    <Do the trashing of report here, you know that already.>
    # Decide what to do after having called #trash
    respond_to do |format|
      format.html { redirect_to(reports_url) }
    end
  end
end

アクションを許可するコントローラーがいくつかしかない場合は、すべてのコントローラーに追加するのではなく、コントローラーごとに特別なルート ルールを追加する方がおそらく簡単です。さらに一歩先に進みたい場合は、ゴミ箱アクションをミックスインに実装し、それを入れたいコントローラーにミックスすることができます (いいえ、私もそれを実装しません)。

于 2011-09-20T06:23:42.940 に答える