如何将一个“新”资源变成帖子并获得?

问题描述:

我希望能够在我的新资源路线上发布帖子请求,并遇到问题。目前我有这在我的routes.rb文件如何将一个“新”资源变成帖子并获得?

resources :shipments, only: [:new] do 
end 

,我已经试图把post :new的块之间,但是这给了我

shipments POST /:slug/shipments(.:format) shipments#new

,但我想这

new_product_shipment GET|POST /:slug/shipment/new(.:format)

你可以这样做:

resources :orders, only: [:new] do 
    collection do 
    post 'new' 
    end 
end 

但是,顺便说一句 - 这是非常奇怪的决定,有两种方法的单一行动。

+0

该结束了给我'出货量POST /:蛞蝓/发货(。 :格式)出货#new',无论如何只是将它与新的?或者我应该只使用match和'via:[:get,:post]完成一条新路线' – cvDv

+0

@cvDv你使用'post'new''而不是'post:new'?当然,你可以使用match来实现同样的事情,我只是更喜欢第一种形式。 – unkmas

因为你还没有一个RESTful的路线,你不需要resources块,对routes.rb顶层用match

match '/:slug/shipment/new', to 'shipments#new', via: [:get, :post]