简体   繁体   中英

Rails routes: collection routes keep adding “_index” to url helper?

I'm trying to create extra paths for my checkout controller. Here are my routes:

resources :checkout do
  collection do
    post :add_to_cart, :to => 'checkout#add_to_cart'
    put :update_shopping_cart, :to => 'checkout#update_shopping_cart'
    get :billing
    post :update_billing
    put :update_billing
    post :update_shipping
    put :update_shipping
    get :order_summary
    post :submit_order
    get :order_complete
    get :clone_shipping_address
    get :estimate_shipping
  end


end

However, when I do a bundle exec rake routes | grep checkout bundle exec rake routes | grep checkout , all my custom routes have an _index suffix that I don't want:

             add_to_cart_checkout_index POST   /checkout/add_to_cart(.:format)                                 checkout#add_to_cart
    update_shopping_cart_checkout_index PUT    /checkout/update_shopping_cart(.:format)                        checkout#update_shopping_cart
                 billing_checkout_index GET    /checkout/billing(.:format)                                     checkout#billing
          update_billing_checkout_index POST   /checkout/update_billing(.:format)                              checkout#update_billing
                                        PUT    /checkout/update_billing(.:format)                              checkout#update_billing
         update_shipping_checkout_index POST   /checkout/update_shipping(.:format)                             checkout#update_shipping
                                        PUT    /checkout/update_shipping(.:format)                             checkout#update_shipping
           order_summary_checkout_index GET    /checkout/order_summary(.:format)                               checkout#order_summary
            submit_order_checkout_index POST   /checkout/submit_order(.:format)                                checkout#submit_order
          order_complete_checkout_index GET    /checkout/order_complete(.:format)                              checkout#order_complete
  clone_shipping_address_checkout_index GET    /checkout/clone_shipping_address(.:format)                      checkout#clone_shipping_address
       estimate_shipping_checkout_index GET    /checkout/estimate_shipping(.:format)                           checkout#estimate_shipping
                         checkout_index GET    /checkout(.:format)                                             checkout#index
                                        POST   /checkout(.:format)                                             checkout#create
                           new_checkout GET    /checkout/new(.:format)                                         checkout#new
                          edit_checkout GET    /checkout/:id/edit(.:format)                                    checkout#edit
                               checkout GET    /checkout/:id(.:format)                                         checkout#show
                                        PUT    /checkout/:id(.:format)                                         checkout#update
                                        DELETE /checkout/:id(.:format)                                         checkout#destroy

How would I remove that?

You have to pluralize the name of the resources:

resources :checkouts do
  ## your routes
end

In fact you have to use resource :checkout or resources :checkouts , depending on what you need.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM