Ruby on rails 如何在RubyonRails中为不同的模型实现相同的路由模式?

Ruby on rails 如何在RubyonRails中为不同的模型实现相同的路由模式?,ruby-on-rails,routing,routes,Ruby On Rails,Routing,Routes,我有一个WP站点,静态页面使用/page/路由模式,类别使用/category/模式。所以WordPress理解/about/是一个页面,/science/是一个类别。现在我试着用同样的路线在轨道上移动它。 页面和类别都是模型,它们应该能够从管理区域进行编辑。 如何让Rails清楚地检查现有页面,如果没有页面,那么检查类别 另外,我知道我可以做“/pages/:url/”,但我真的对如何做我以前问过的事情很感兴趣。您没有给出代码的详细信息,所以我要写一个通用答案。您可以根据自己的代码进行调整 在

我有一个WP站点,静态页面使用/page/路由模式,类别使用/category/模式。所以WordPress理解/about/是一个页面,/science/是一个类别。现在我试着用同样的路线在轨道上移动它。 页面和类别都是模型,它们应该能够从管理区域进行编辑。 如何让Rails清楚地检查现有页面,如果没有页面,那么检查类别


另外,我知道我可以做“/pages/:url/”,但我真的对如何做我以前问过的事情很感兴趣。

您没有给出代码的详细信息,所以我要写一个通用答案。您可以根据自己的代码进行调整

在大多数情况下,我们只有很少的静态页面,比如about、home或者更多

因此,基于此,您可以为这些静态页面创建特定的路由,并为类别创建另一个路由

get '/home'      => 'static#action'
get '/about'     => 'static#anotheraction'
get '/:category' => 'categories#action'

可以按以下方式重命名管线:

get 'categories', path_names: { index: 'category' }
get 'pages', path_names: { index: 'page' }
请参阅此链接

如果要将所有称为“类别”的路由更改为“类别”,请尝试:

请参阅此链接

要使/science成为名为science的显示类别,请尝试以下操作:

将路线更改为:

获取“categories/:name”=>“categoriesshow”

在操作中,在类别中显示\u控制器使用@category=category读取类别。通过\u nameparms[:name]查找\u

您可以使用index_controller按如下方式添加剩余路由:

get '/home' => 'index#action'
get '/about' => 'index#anotheraction'
要在两个控制器之间更改URL,请尝试以下操作:

在页面中\u控制器在操作中显示是否执行此操作:如果Page.wherename:params[:name].first.present? 您的代码将显示此页面 其他的 渲染“类别/显示” 结束

检查此链接


你真的应该从你有很多静态页面开始吗?因为如果没有,你可以为他们做特定的路线,为类别做另一条路线。我做到了。我知道一些轨道路线的基本知识。我想我不会有很多静态页面。是的,我可以为每个现有的静态页面实现单独的路由,但是如果我在管理区域再添加一个,就不会有路由了。是的,我可以为每个页面创建特定的路由,然后为类别创建动态路由处理,但我想为具有相同模式的两个模型创建动态处理。类似于这样的获取“/:page”=>“pagesaction”,然后获取“/:category”=>“categoriesaction”,我的意思是我对页面显示和分类显示有相同的模式。例如,如果用户转到“/test”,则第一个路由应尝试将其作为页面处理,如果没有页面,则第二个路由应尝试将此url作为类别处理。
get '/home' => 'index#action'
get '/about' => 'index#anotheraction'