我如何使它工作? 这是一个例子网址,我需要:嵌套路线不起作用
/姓名/职位/ 2
我的routes.rb
get "/:name", to: "categories#show" do
resources :posts, only: [:show]
end
我如何使它工作? 这是一个例子网址,我需要:嵌套路线不起作用
/姓名/职位/ 2
我的routes.rb
get "/:name", to: "categories#show" do
resources :posts, only: [:show]
end
应用程序/配置/ 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友好通过使用强参数。
这将捕捉到任何像网址,并将其路由/:name
到类别控制器。 添加:path => ""
意味着它会从URL中删除资源标识符。 因此,您现在得到的不是/ categories/foobar
/foobar
然后,您只需在父路线中嵌套您的发布路线。
resources :categories, :path => "" do
resources :posts, :only => :show
end
注意,这种包罗万象的路线可能非常容易出错,因为它抓住了一切,包括废话,你不要指望:)