我有一个短信网关,如果用户回复收到的短信,就会向我发送请求。
# gateway pushes following fixed style get-params
# to my server/reply_from_gateway-action: ?id=123456&answer=Test
# => http://myserver.aaa/reply_from_gateway?id=123456&answer=Test
现在我想添加以下路由,因为sms网关有一个已定义的get参数结构:
get "deactivate_via_sms?id=:id&answer=:answer" => "reminders#deactivate_via_sms"
:as => "deactivate_via_sms"
但这不起作用,你能帮助我吗?
答案 0 :(得分:0)
你可以在控制器中手动从params
中提取CGI风格的参数,你不需要(或想要)它们在路线中:
get "deactivate_via_sms" => "reminders#deactivate_via_sms", :as => "deactivate_via_sms"
然后在RemindersController#deactivate_via_sms
:
def deactivate_via_sms
id = params[:id]
answer = params[:answer]
#...
end
答案 1 :(得分:0)
你可以在控制器中手动将CGI风格的参数拉出params,你不需要(或想要)它们在路线中
但在这种情况下,您无法使用辅助工具,例如
deactivate_via_sms_path(id,answer)
或者您可以使用此代码创建帮助
get "deactivate_via_sms?id=:id&answer=:answer" => "reminders#deactivate_via_sms"
:as => "deactivate_via_sms"
但您的路由将失败
我通过改变"?"解决了这个问题。到" /"在路线
get "deactivate_via_sms/id=:id&answer=:answer" => "reminders#deactivate_via_sms"
:as => "deactivate_via_sms"
路由工作和帮助方法也可以正常工作