Rails路由问题:嵌套资源无法调用#create动作
嘿,我帮你把这些路由配置和结果整理得明明白白啦:
路由配置(config/routes.rb)
这是你写的嵌套路由,把支付源资源嵌套在用户资源下,还指定了仅开放的动作和对应的控制器:
resources :users do resources :payment_sources, only: [:index, :new, :create, :destroy], controller: 'users/payment_sources' end
生成的路由信息
你执行了rake routes | grep payment_source命令过滤相关路由,得到的结果如下(看起来结果有部分截断):
user_payment_sources GET /users/:user_id/payment_sources(.:format) users/payment_sources#index POST /users/:user_id/payment_sources(.:format) users/payment_sources#create new_user_payment_source GET /users/:user_id/payment_sources/new(.:format) users/payment...
我再给你拆解下这些路由的实际作用:
user_payment_sources GET:发送这个GET请求会触发Users::PaymentSourcesController的index方法,用来列出某个用户的所有支付源。POST /users/:user_id/payment_sources:这个POST请求对应控制器的create方法,用来提交并创建新的支付源。new_user_payment_source GET:这个GET请求对应控制器的new方法,用来展示创建支付源的表单页面。- 另外你还配置了
destroy动作,对应的完整路由应该是DELETE /users/:user_id/payment_sources/:id(.:format),只是没出现在你提供的grep结果里,它会触发控制器的destroy方法来删除指定的支付源。
内容的提问来源于stack exchange,提问作者Miguel Torres
相关产品推荐
相关产品推荐

