Rails routes.draw如何在幕后工作?

时间:2012-11-30 16:32:51

标签: ruby-on-rails ruby routing

我正在研究以下代码:

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. matchresources等与draw在同一范围内定义,因此这些函数会一个接一个地执行,尝试匹配Request。如果其中之一,它会调用正确的控制器操作。
  4. 这是对的吗?

    谢谢!

0 个答案:

没有答案