Techioz Blog

エレガントなレール: 複数のルート、同じコントローラーのアクション

概要

複数のルートを同じルートに移動させる最もエレガントな方法は何ですか? コントローラーアクション?

私は持っている:

  get 'dashboard', to: 'dashboard#index'
  get 'dashboard/pending', to: 'dashboard#index'
  get 'dashboard/live', to: 'dashboard#index'
  get 'dashboard/sold', to: 'dashboard#index'

これはかなり醜いです。 「よりエレガントな」推奨事項はありますか? ワンライナーのボーナスポイント。

解決策

ルートとコントローラー アクションを 1 つだけにして、渡されるパラメーターに基づいて機能を変えてみてはいかがでしょうか。

get 'dashboard', to: 'dashboard#index'
def index
  ...
  if params[:pending]
     # pending related stuff
  end
  if params[:live] 
    # live related stuff
  end
  if params[:sold] 
    # sold related stuff
  end     
  ...
end