2014-02-16 53 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 

注意,这种包罗万象的路线可能非常容易出错,因为它抓住了一切,包括废话,你不要指望:)