一个控制器用于多个路由

Tim*_*aas 5 routing ruby-on-rails

我一直在寻找一段时间,但我似乎无法弄清楚这是否可能.我需要的是两个不同路径的一个控制器.

我所拥有的是一个模型,有两种类型:自有和兼容.

所以我想要的是这样的两条路径,同时转到一个控制器:

example.com/hotels

example.com/compatitives
Run Code Online (Sandbox Code Playgroud)

这些必须是资源,并且在这些路线中将会有很多嵌套.所以我不想为它们创建资源映射.

我已经尝试过了:

resources :hotels, :compatitives, :controller => :hotels do

  resources :rooms do
    collection do
      match "/search", :action => :search
    end
  end

  collection do
    match "/search"
    match "/results/:type/:id(/:page)", :action => :results
  end

end

resources :prices do
  collection do
    match "/check"
  end
end
Run Code Online (Sandbox Code Playgroud)

但控制器不是两者的hotels_controller.

这甚至可能吗?

谢谢!

Tim*_*aas 1

让它与这个解决方案一起工作:

def add_hotel_collection
  resources :rooms do
    collection do
      match "/search", :action => :search
    end
  end
  collection do
    match "/search", :action => :search
    match "/results/:type/:id(/:page)", :action => :results
  end
end

resources :hotels do
  add_hotel_collection
end

resources :compatitives, :controller => :hotels do
  add_hotel_collection
end
Run Code Online (Sandbox Code Playgroud)