我有一个网址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
答案 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
这应该是你正在寻找的。希望这有帮助!