我正在尝试对控制器上的方法使用PATCH / PUT操作:
def specialClickThrough
# Incriment click
clickIncrimentBudgetReduce = "UPDATE `campaigns`
SET clicks = clicks + 1
, budget = (budget - bid_price)
, is_active = CASE
WHEN (budget - bid_price) > 0.0
THEN 1
ELSE 0
END
WHERE id = " + params[:campaign_id].to_s
ActiveRecord::Base.connection.execute(clickIncrimentBudgetReduce)
end
在浏览器中键入:localhost:3000/specialClickThrough/27
时,它会返回:No route matches [GET] "/specialClickThrough/27"
,即使其中有一个显示为:
match '/specialClickThrough/:campaign_id', to: 'requests#specialClickThrough', via: 'put'
更新
我尝试过postman chrome扩展但仍然没有:
从它注意到的文档中简单地将请求类型设置为所需的类型。我怎样才能让它发挥作用?
答案 0 :(得分:0)
如果您添加via: 'put'
选项,GET将无法正常工作......
那么,你是如何尝试执行PUT请求的呢?
尝试使用curl或postman也许......
路线定义明确。问题是你正在进行GET而不是PUT请求。
答案 1 :(得分:0)
在邮递员中,似乎是响应代码422
,它通常来自参数验证错误。当然,因为当你的路由需要campaign_id
时你没有传入任何参数,所以你正在点击端点(对于PUT请求,你需要将参数作为数据传递,而不是像GET那样传递编码的URL。)
发送放置请求时,请确保campaign_id
可用。 (例如,在您的邮递员中,请尝试在campaign_id
按钮上方的key
字段中输入send
并输入一些值。它应该为您提供除422
以外的其他内容取决于您的实施)