如果我所做的任何假设是错误的,请纠正我,但这是我的想法:
当我们在路线文件中使用新的“资源”时,要让我们说新的GET REST API,最好还使用新的“控制器 “为那个资源。
现在,当我们使用新控制器时,我们还会根据该控制器的名称获得新的默认路由。 这是我的问题开始的地方:)
我已经有了控制器和GET REST,例如我有一个health_mamagment
控制器,然后是/health_managment/id.json
所以现在当我在这个URL上时,它有几个导航链接 - 比如Windows Apps中的选项卡 - 所以用户可以点击其他链接并需要查看一些新数据。 (仍然是相同的WorkFlow,他只是想看到一些新数据)。
所以我在这里调用一个新的GET REST API来获取链接的新数据,例如名为Payers
像/health_managment/id/payes
这样的网址有意义吗?
但是,如果我们为这个新的“付款人”视图创建一个新的控制器和资源,那么在路径文件中我可以以某种方式使用“as”关键字吗?并将新路线映射为/health_managment/id/payes
答案 0 :(得分:3)
您可以在路径文件中嵌套资源并指定要使用的控制器:
# /config/routes.rb
resources :health_managment do
resources :payes, :controller => "Payer" do
member do
# Your custom routes
end
end
end
这将导致您可以使用该URL / health_managment / ID / payes
作为对“付款人”控制器的访问权限。
使用:因为不会修改URI端点,但会修改命名助手,如下所示: http://guides.rubyonrails.org/routing.html在第4节。
根据评论中的要求,以下是对“成员”部分的更深入了解:
# /config/routes.rb
resources :posts do
get 'recent'
member do
get 'abstract'
end
end
将生成自定义网址:
或者,你可以像这样编写这条路线:
# /config/routes.rb
resources :posts do
get 'recent', :on => :collection
get 'abstract', :on => :member
end
当你声明子资源时,它们被设置在“成员级别”,因此:
# /config/routes.rb
resources :posts do
get 'recent', :on => :collection
get 'abstract', :on => :member
resources :comments do
# Routes again
end
end
将允许您访问URI / posts /:id / comments并从那里定义自定义路由
答案 1 :(得分:1)
是的,您提出的网址确实有意义,但您在路径文件中映射的方式取决于您的health_management资源与付款人资源之间的关系。
如果两者之间存在has_many / belongs_to关系,我建议您查看nested resources。您也可以使用以下路线手动执行此操作:
get '/health_managment/:id/payers' => 'payers#index'
在付款人控制器文件中,您可以进行以下索引操作:
def index
@health_managment = HealthManagment.find(params[:id])
@payers = @health_managment.payers
end
如果您正在使用API,那么将其限制为通常的REST结构是有意义的,为此,嵌套资源运行良好。