0

私の Rails アプリでは、基本的な CRUD 関数にリソースの豊富なルートを使用しています。しかし、場合によっては、コントローラーに新しいビューとメソッドを追加しています (特定のレポート機能など)。これらはリソースフル ルートに自動的に含まれますか? それとも、routes.rb の行ごとに get または match 行を作成する必要がありますか?

これがroutes.rbの現在のやり方です...すべてを明示的に指定する必要がある場合、アプリが成長するにつれてこれは扱いにくくなるようです...

  resources :procedures

  resources :headlines

  devise_for :users

  resources :services

  resources :headlines  

  get  "welcome/index" 
  get "welcome/profile"
  get "welcome/kpi"
  get "welcome/inventory"
  get "public/index" 
  match "insurancelist" => "appointments#insurancelist"


  get "admin/index" 
  get "dentrix/index"
  get "dexis/index"
  get "eaglesoft/index"
  get "reports/index"
  get "reports/dentist"
  get "reports/office"
  get "reports/collections"


  resources :patients

shallow do
   resources :locations do
    resources :practitioners do
      resources :timecards
      resources :appointments
    end
  end
end
4

2 に答える 2

1

こちらの公式Railsガイドでルートについて読む必要があります

ここで、質問に対する簡単なヒントをいくつか示します (REST 以外のアクションをリソースに追加したいと考えているようです)。

どれどれ。たとえば、Project モデルとprojectsリソースがあるとします。printそして、プロジェクト アイテムのアクション (そのアクションでは、たとえば、紙に印刷するレポートを準備します) と、publishedプロジェクト リソース全体のアクション (ある種のレポートのみの選択アクションとして)を追加します。

routes.rb次の行に次のように書く必要があります。

resources :projects do
  collection do
    get :published
  end

  member do
    get :print
  end
end

そのコードは次のルートを提供します:

GET    /projects           => projects#index
GET    /projects/published => projects#published
GET    /projects/new       => projects#new
POST   /projects           => projects#create
DELETE /projects/:id       => projects#destroy
PUT    /projects/:id       => projects#update
GET    /projects/:id       => projects#show
GET    /projects/:id/edit  => projects#edit
GET    /projects/:id/print => projects#print
于 2013-04-23T19:06:45.260 に答える
1

これらの追加ルートは、リソースフル ルートには含まれません。あなたの例のルートでは、残念ながらそれらを圧縮する方法は実際にはありません。ルートファイルにはそれぞれ個別の行が必要です。

于 2013-04-23T19:09:20.813 に答える