2014-02-16 80 views
1

我如何使它工作? 這是一個例子網址,我需要:嵌套路線不起作用

/姓名/職位/ 2

我的routes.rb

get "/:name", to: "categories#show" do 
    resources :posts, only: [:show] 
    end 

回答

1

應用程序/配置/ routes.rb中

scope path: '/:name' do 
    resources :posts, only: [:show] 
end 

resources :posts, except: [:show] 

這會將:name:id參數傳遞到您的posts#show函數中。

應用程序/控制器/ posts_controller.rb

def show 
    user = User.where(name: params[:name]).first 
    @post = Post.where(['id = ? AND user_id = ?', params[:id], user.id]) 

    render @post 
end 

注:這可以是多個導軌4友好通過使用強參數。

0

這將捕捉到任何像網址,並將其路由/:name到類別控制器。 添加:path => ""意味着它會從URL中刪除資源標識符。 因此,您現在得到的不是/ categories/foobar/foobar 然後,您只需在父路線中嵌套您的發佈路線。

resources :categories, :path => "" do 
    resources :posts, :only => :show 
end 

注意,這種包羅萬象的路線可能非常容易出錯,因爲它抓住了一切,包括廢話,你不要指望:)