Rails路由 - 匹配

时间:2011-08-14 08:08:51

标签: ruby-on-rails-3 routes

我有一个网址http://localhost:3000/cars/2/wheels/5/airs/6

的routes.rb

resources :cars do
  resources :wheels do      
    resources :airs do  
      resources :oxygens
...

我希望此网址在浏览器中看起来像http://localhost:3000/track/6 环境Rails 3.0.9

2 个答案:

答案 0 :(得分:0)

您不必像这样创建嵌套资源。我想你只需要使用resources :airs, :as => "track", :only => [:show],如果我理解了你想要的东西,那就去吧。

或者您可以使用匹配'track/:id', :to => 'airs#show'

答案 1 :(得分:0)

您应该创建一个属于汽车,空气和氧气模型的Track模型。

从命令行使用:

 ./script/generate model track car_id:integer air_id:integer oxygen_id:integer

 rake db:migrate

然后更新您的track.rb型号:

 class Track < ActiveRecord::Base
   belongs_to :car
   belongs_to :air
   belongs_to :oxygen
 end

最后,将其添加为routes.rb

的路线
 map.resources :tracks

然后,如果您只是添加属于您要查找的项目的曲目,您将能够导航到该曲目。例如,在./script/console中,键入:

 Track.new(:car_id => 2, :air_id => 5, :oxygen_id => 6)

然后导航至:

 http://localhost:3000/tracks/1

这应该是你正在寻找的。希望这有帮助!