0

私のconfig/routes.rbファイルには次のルートがあります。

resources :employees do
  get 'dashboard'
  get 'orientation'
end

employees標準の RESTful アクションを処理する通常のリソースを指します。インスタンスに作用する「カスタムアクション」と私が現在呼んdashboardでいるものです。用語が混同されていて、実際には別のものである場合はお詫び申し上げます。これらのカスタム アクションは、次のように URL に応答します。orientationEmployeedashboardorientation

http://myhost/employees/1/dashboard

showつまり、editなどによく似た「メンバー」アクションです。

とにかく、これはすべて十分に機能します。を通じて関連付けられた IDshowEmployeesController取得するなどの通常のアクション。ただし、この現在の構造では、代わりに使用する必要があります。これは対処するのがそれほど難しくありませんが、これらの 2 つのアクションでは動作しないことを期待している通常の s として、コードの複雑さが増します。Employeeparams[:id]dashboardorientationparams[:employee_id]before_filterparams[:id]

params[:id]これらのカスタム アクションの ID をルーティング システムに入力するにはどうすればよいshowですか? memberこれらのアクションの代わりにさまざまなアプローチを試みましgetたが、まだ希望どおりに動作するものはありません。このアプリは Ruby on Rails 3.2 を使用して構築されています。

4

2 に答える 2

2

これはあなたを助けるかもしれません:

resources :employees do
  member do
    get 'dashboard'
    get 'orientation'
  end
end

上記は以下のようなルートを生成し、EmployeesController で params[:id] を使用できるようになります。

dashboard_employee   GET    /employees/:id/dashboard(.:format)          employees#dashboard
orientation_employee GET    /employees/:id/orientation(.:format)        employees#orientation
于 2013-08-06T17:32:22.723 に答える