我希望有以下路线:
sports/1
为id = 1的运动调用show
方法。
sports/about/1
显示id为1的运动的“关于”页面。
现在我有:
resources :sports
routes.rb
中的。
如果我试着去
sports/about/1
我收到错误,因为当然没有运动有关于=。
我可以这样做吗?
为了澄清,我的about
只是sports_controller
行动。感谢两种方法(控制器和动作)
答案 0 :(得分:4)
你可以使用rails路径做任何你想做的事。
编辑:现在是一个更完整(和正确)的解决方案:
首先在体育资源中声明一个新的REST动作:
resources :sports do
get 'about', :on => :member
end
然后,要将正常网址行为 url / sports / id / about 更改为 url / sports / about / id ,您应该使用:
match 'sports/about/:id', :controller => 'sports', :action => 'about'}
答案 1 :(得分:1)
这应该照顾你的路线,但你真的应该check out the RailsGuides关于这个主题。
resources :sports do
resources :about
end
这将为您提供sports/:sport_id/about/:id
等路线。当然,您需要在form_for(@sport, @about) do |f|
电话或类似的内容中设置运动的价值。
答案 2 :(得分:0)
在routes.rb
中以相同的顺序编写以下内容
match 'sports/about/:id' => 'sports#show', :as => :sport
resources :sports
显示运动用sport_path(@sport)
答案 3 :(得分:0)
我认为这是最直接的方式:
resources :sports do
collection do
resources 'about'
end
end
或者也许:
namespace :sports do
resources 'about'
end
取决于您是否需要单独的控制器。