3

プロジェクトに対応するrailsモデルとコントローラーがあります。各プロジェクトには複数のステータスがあります。ステータスが提案、承認、アーカイブ可能であるとしましょう。

私のコントローラーには、インデックスアクションがあります。ただし、アプリ全体のビューでは、提案、承認、アーカイブされたプロジェクトにリンクし、それらのみを表示したいと思います。

承認、提案、アーカイブなどのアクションを作成し、それらに一致するアクションのみを取得させることができます。

私が検討していたもう1つのことは、各リンクが変数をparamsに渡し、それがインデックスアクションの実行内容を指示することです。

これらの2つのうちどちらが適切な方法であるか、および/またはレールに何かが欠けていますか?

4

1 に答える 1

6

私は間違いなく、params に設定された変数のオプションを好みます。この方法は DRY'er であり、新しいステータスを追加することはほとんど簡単です。それを実装するには、次のコードを使用します。

# routes.rb

match 'projects/:filter' => 'projects#filter', :constraints => { :filter => /^approved$|^archived$|^proposal$/}

# ProjectsController.rb

  def filter
    @projects = Project.where(:status => params[:filter])
  end

このように、さらにステータスを追加する場合、ルート定義でフィルタリングを許可するだけです。

于 2012-09-10T22:42:13.283 に答える