我想知道是否有人可以给我任何建议。
我目前正在编写rails API,虽然它似乎不是最佳做法,而是执行DELETE调用
localhost:3000/products/:id
id而不是
localhost:3000/products/:url
并传入要删除的网址,但我目前已经收到了此信息,但我一直收到路由错误。
DELETE '/products/:url', to: 'products#destroy'
是我目前的路线,它也在我的
之上指定resources :products
部分。
我的整个路线档案:
AppName::Application.routes.draw do
resources :features do
resources :feature_links
end
resources :wishlist_items
resources :data_feeds
get '/get_data_feeds', to: 'data_feeds#get_feed_url', as: 'feed_url'
resources :genders
resources :trends
resources :sub_categories
resources :color_tags
resources :colors
resources :categories
delete '/products/:url', to: 'products#destroy'
resources :products do
member do
get 'buy'
post 'wish'
end
end
end
有什么想法吗? 提前致谢
如果我发送删除请求的网址为http://localhost:3000/products/www.test.com
,如果我发送删除请求的网址为No route matches [DELETE] "/products/www.test.com"
,则会收到错误http://localhost:3000/products/:url
我收到错误{{ 1}}
我的销毁方法代码:
Couldn't find Product with 'id'=:url
答案 0 :(得分:1)
我认为Rails正在考虑将您的URL参数作为响应格式的规范。您可以按如下方式覆盖参数的约束:
constraints: { url: /[^\/]+/ }
这将确保URL参数可以是除/
之外的任何内容。整条路线应如下所示:
delete "/products/:url", to: "products#destroy", constraints: { url: /[^\/]+/ }, as: :products_destroy_with_url
并像这样使用它:
link_to "Destroy", products_destroy_with_url_path("www.test.com"), method: :delete