私が疑問に思っているのは、この場合、いくつかのWebサービスタイプのコントローラーを作成したい場合、コントローラーから呼び出すことができるメソッドを「エクスポート」する方法があるかどうかです。私はまだ RoR とそのルート機能に非常に慣れていませんが、結局のところ、完全に機能する RoR アプリケーションには数百のルートがあるだけでよいのでしょうか? 私が作成しているすべてのコントローラー メソッドが「リソース」カテゴリに分類されるわけではありません。
2 に答える
Rails ルートにはいくつかの種類があります。RESTful ルートは、たまたま Rails リソースのネイティブ サポートを提供するルートにすぎません。イベント リソース ルートは、メンバー ルートとコレクション ルートを持つように変更できることに注意してください。
# routes.rb
resources :products do
member do
get 'short' #=> products/:product_id/short/:id
post 'toggle' #=> products/:product_id/toggle/:id
end
collection do
get 'sold' #=> products/sold
end
end
リソース ルートを他のリソース ルート内にネストすることもできます。
# routes.rb
resources :products do
resources :comments #=> RESTful routes patterned as products/:product_id/comments/:id/:action
resources :sales do
get 'recent', :on => :collection
end
end
もう 1 つの便利な機能は、ルーティングという名前です。次のルートは機知に富んでいません:
# routes.rb
match 'products/:id/purchase' => 'catalog#purchase', :as => :purchase # Creates route path akin to purchase_path(:id)
名前空間化されたルートは、整理と読みやすさに非常に役立ちます。
# routes.rb
namespace :admin do
resources :products #=> RESTful routes patterned as admin/products/:product_id/:action
end
したがって、基本的には、RESTful/resourceful であるかどうかに関係なく、やりたいことすべてにルートがあります。ただし、アプリに公開するすべてのアクションのルートを作成する必要があります。
このroutes.rb
ファイルを使用して、ルートまたはルートのパターン マッチング、パラメーター化されたルート、ネストされたルートを作成できます。詳細については、こちらを参照してください。
などの独自のメソッド名をルートに付けることもできますmy_new_route_path
。本当にやりたい場合は、ルートを HTML にハードコードするだけで済みます。これをしないでください。
すべてのコントローラー アクションには、それにマップするルートが必要です。