2017-08-24 92 views
0

我有兩種模式 - Post和Page,它們都有從第一個斜槓開始的路徑。例如:Friendly_id和兩根slu start從根開始

  1. domain.com/first-slug - 這是後
  2. 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 

但我有一些gem問題,它使用controller_name方法爲d efine模型類。

二的解決方案,當我使用的PageController和PostController中和路線爲:

get '/*id', to: 'pages#show', as: :page 
get '/*id', to: 'posts#show', as: :post 

一個無限循環發生,當然

還有沒有其他的辦法來解決這個非標準的做法?

回答

0

當然,我必須在路徑中使用約束條件。例如:

get '/*id', to: 'posts#show', as: :post, constraints: { id: /\d{4}\/\d{2}\/\d{2}\/\w.+/ } 
get '/*id', to: 'pages#show', as: :page