我正在尝试实现像“github.com/josevalim/inherited_resources”这样的“àlagithub”网址。
我用这段代码实现了我的目标:
resources :users, :path => '', only: [] do
resources :projects, :path => '', only: [:show]
end
但是现在,我找不到一种方法可以正确地重定向到这条路线。
当我在控制台中运行rake routes
时,我所拥有的只是
GET /:user_id/:id(.:format) projects#show
没有名称可以找到像旧版users_project_path
一样的帮助方法。
我错过了什么吗?谢谢!
答案 0 :(得分:1)
我最近做了类似的事情,尝试以下
scope '/:user_id', as: :user do
resources :projects, path: '', only: [:show]
end
运行rake routes
应该会给你
user_project GET /:user_id/:id(.:format) projects#show
这将为您提供正确的user_project_path(:user_id, :id)
路线助手。
答案 1 :(得分:0)
您正在删除路径,因为您可以获取route_path,用于建立路由名称。
resources :users, :path => '', only: [] do
get :projects, "/:user_id/:id", :to => "project#show", :as => :project_user
end
如果您不想使用,可以使用此代码生成路径:
url_for([@user, @project])