Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/63.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ruby-on-rails-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails RubyonRails-Routes-从URL中走出一步_Ruby On Rails_Ruby On Rails 3_Seo_Routes - Fatal编程技术网

Ruby on rails RubyonRails-Routes-从URL中走出一步

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

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
基本上,从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}”)
请参见: