2

伙计们,

目前,Rails 路线有点问题。

拥有一个顶级资源:/Customer/ 它本身只有一个 /Quote/ 资源

报价可以同时具有 first_resources 和 second_resources

这是与报价相关的资源的集合

构建路线,但如何在 has_one 路线下嵌套多条路线?

map.resources :customer, :has_one => :quote

我该怎么办?

quote.resources :first_resources
quote.resources :second_resources

通过将它们作为子元素映射到子结构?

或者以不同的方式管理馆藏会更容易吗?

4

2 回答 2

4

为此,我将嵌套在一个块内:

map.resources :customers do |customer|
  customer.resource :quote do |quote|
    quote.resources :first_resources
    quote.resources :second_resources
  end
end

替代语法:

map.resources :customers do |customer|
  customer.resource :quote, :has_many => [:first_resources, :second_resources]
end

这会给你的网址

customers/:customer_id/quote/first_resources/:id
customers/:customer_id/quote
customers/:id

或者您提供的方式,我相信您需要映射复数引号,以便能够在您不想嵌套时获得特定的报价

map.resources :customers, :has_one => :quote
map.resources :quotes, :has_many => [:first_resources, :second_resources]

这会给你的网址

customers/:customer_id/quote
customers/:id
quotes/:quote_id/first_resources/:id

我认为第一个是你所追求的。希望这可以帮助。

资源: http ://api.rubyonrails.org/classes/ActionController/Resources.html

于 2010-07-02T06:47:06.580 回答
0

map.resources :customers, :has_one => :quote

map.resource :quote, :has_many => :first_resources

map.resource :quote, :has_many => :second_resouces

于 2010-07-02T05:57:32.677 回答