Friendly_id 和两个 slug 从根开始
Posted
技术标签:
【中文标题】Friendly_id 和两个 slug 从根开始【英文标题】:Friendly_id and two slug start from root 【发布时间】:2018-02-02 11:49:19 【问题描述】:我有两个模型 - Post 和 Page,它们都有从第一个斜杠开始的路径。例如:
domain.com/first-slug - 这是帖子 domain.com/second-slug - 这是页面
我可以像这样创建控制器,作为 ContentController 和处理 slug:
class ContentsController < ApplicationController
def show
@page = Page.find_by(slug: params[:id])
@post = Post.find(params[:id]) unless @page
end
end
但是我对 gems 有一些问题,它使用 controller_name 方法来定义模型类。
第二种解决方案,当我使用 PageController 和 PostController 和路由时:
get '/*id', to: 'pages#show', as: :page
get '/*id', to: 'posts#show', as: :post
当然会发生无限循环
还有其他方法可以解决这种非标准方法吗?
【问题讨论】:
【参考方案1】:当然,我必须在路径中使用约束。例如:
get '/*id', to: 'posts#show', as: :post, constraints: id: /\d4\/\d2\/\d2\/\w.+/
get '/*id', to: 'pages#show', as: :page
【讨论】:
以上是关于Friendly_id 和两个 slug 从根开始的主要内容,如果未能解决你的问题,请参考以下文章