Ruby on rails RubyonRails-Routes-从URL中走出一步
My routes.rb文件:Ruby on rails RubyonRails-Routes-从URL中走出一步,ruby-on-rails,ruby-on-rails-3,seo,routes,Ruby On Rails,Ruby On Rails 3,Seo,Routes,My routes.rb文件: resources :forums do resources :discussions, end 我的项目已全部设置完毕并正在运行,论坛主题的URL为: localhost:3000/forums/ - (forum name using permalink) - /topics/1 我想用稍微简单一点的版本来代替它: localhost:3000/forums/ - (forum name using permalink) - /1 基本上,从UR
resources :forums do
resources :discussions,
end
我的项目已全部设置完毕并正在运行,论坛主题的URL为:
localhost:3000/forums/ - (forum name using permalink) - /topics/1
我想用稍微简单一点的版本来代替它:
localhost:3000/forums/ - (forum name using permalink) - /1
基本上,从URL中删除“topics”部分并完全禁用“/topics”,这样就无法访问它
我已经设置了论坛的显示页面,以显示其主题列表。实现这一目标的最佳方式是什么?非常感谢 您需要将路由添加到您的
配置/routes.rb
在我看来,最简单的方法是为/forums/general chat
定义默认路径
match 'forums/:forumname/general-chat/:id => 'controller#method'
要禁用包含中主题的旧路由,请执行以下操作:
match 'forums/:forumname/topics/:id' => redirect("forums/%{forumname}/%{id}")
天气真好 对不起,我觉得我解释得不太清楚。这与我想要达到的目标非常接近,但我想这需要有活力。我在我的原始帖子中添加了一些更详细的解释。因此,您希望它能够显示/forums/forumname/1,并且它应该与/forums/forumname/topics/1相同?您可以在一个路由中使用多个参数。因此,
match'论坛/:forumname/:id=>“controller”方法将起作用。在您的操作中,应该有参数[:forumname]
和参数[:id]
。这是什么意思/forums/forumname/1-这就是我们刚刚确定的工作?现在你想再次禁用它吗?我很困惑…match'论坛/:forumname/topics/:id'=>重定向(“论坛/%{forumname}/%{id}”)
请参见: