我正在使用AngularJS
,由于某种原因,我通过某个网址发送数据root_app/tasks?param1=$param1¶m2=$param2
我在route.rb
文件中写了这个
resources :tasks, :defaults => {:format => "json"}
match "tasks/param1=:param1¶m2=:param2" => "tasks#update", via: :put
match "tasks/param1=:param1¶m2=:param2" => "tasks#destroy", via: :delete
但是当我通过AngularJS
发送数据时,我收到了此消息
DELETE http://localhost:3000/tasks?param1=1¶m2=0 404 (Not Found)
为什么会这样?
答案 0 :(得分:3)
你不需要匹配url中的params只需写
match "/tasks" => "tasks#destroy", via: :delete
答案 1 :(得分:1)
这是因为在确定路由时,rails会忽略URL字符串的“参数”部分(?
之后的任何内容)。只考虑路径(?
之前的所有内容)。
但是,URL参数中的所有内容都将位于控制器的params
哈希值中 - 您可以在此处进行分支。如果您只是params[:param1]
params[:param2]
和match "tasks" => "tasks#destroy", via: :delete
如果您想通过路由执行此操作,而不是http://localhost:3000/tasks?param1=1¶m2=0
执行http://localhost:3000/tasks/param1/1/param2/0
并使用路由match "tasks/param1/:param1/param2/:param2"
。