4

我正在研究以下代码:

Helloworld::Application.routes.draw do
  match 'products/:id/purchase' => 'catalog#purchase'

  resources :products do
    member do
      get 'short'
      post 'toggle'
    end

    collection do
      get 'sold'
    end
  end
end

有人可以解释一下,如何将 URL 映射到幕后的控制器?

我理解的方式:

  1. 来自 Rack 的请求对象进来;
  2. draw评估其代码块;
  3. match, resourcesand etc 定义在与 相同的范围内draw,因此这些函数一个接一个地执行,试图匹配 Request. 如果其中之一发生,它会调用正确的控制器操作。

这个对吗?

谢谢!

4

0 回答 0