0

私が疑問に思っているのは、この場合、いくつかのWebサービスタイプのコントローラーを作成したい場合、コントローラーから呼び出すことができるメソッドを「エクスポート」する方法があるかどうかです。私はまだ RoR とそのルート機能に非常に慣れていませんが、結局のところ、完全に機能する RoR アプリケーションには数百のルートがあるだけでよいのでしょうか? 私が作成しているすべてのコントローラー メソッドが「リソース」カテゴリに分類されるわけではありません。

4

2 に答える 2

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 であるかどうかに関係なく、やりたいことすべてにルートがあります。ただし、アプリに公開するすべてのアクションのルートを作成する必要があります。

于 2013-06-12T04:19:44.603 に答える
2

このroutes.rbファイルを使用して、ルートまたはルートのパターン マッチング、パラメーター化されたルート、ネストされたルートを作成できます。詳細については、こちらを参照してください。

などの独自のメソッド名をルートに付けることもできますmy_new_route_path本当にやりたい場合は、ルートを HTML にハードコードするだけで済みます。これをしないでください。

すべてのコントローラー アクションには、それにマップするルートが必要です。

于 2013-06-12T03:47:20.567 に答える