我正在为Rails服务器中的Shipworks实现第三方API,并且Shipworks客户端应用程序正在发布一个action
参数和Shipworks特定的语义。如何在控制器中不使用Rails动作参数
但是,Rails路由逻辑会覆盖此参数作为控制器方法的名称。
是否有我可以写入的自定义路由获取该操作参数的值,而不会被覆盖为我的控制器方法的名称?
我正在为Rails服务器中的Shipworks实现第三方API,并且Shipworks客户端应用程序正在发布一个action
参数和Shipworks特定的语义。如何在控制器中不使用Rails动作参数
但是,Rails路由逻辑会覆盖此参数作为控制器方法的名称。
是否有我可以写入的自定义路由获取该操作参数的值,而不会被覆盖为我的控制器方法的名称?
我想通了。 AbstractRequest有raw_post
方法。
所以,你可以做到这一点来分析原始post数据:
def raw_post_to_hash
request.raw_post.split(/&/).inject({}) do |hash, setting|
key, val = setting.split(/=/)
hash[key.to_sym] = val
hash
end
end
,然后就打电话raw_post_to_hash [:行动]进入原诉讼PARAM或任何其他PARAM。可能有一种更简单的方法。
今天我陷入了这个陷阱,并在控制器方法中使用了这个解决方案。它的Rails 4.1:
if request.method == "POST"
action = request.request_parameters['action']
else
action = request.query_parameters['action']
end
为什么不使用'Rack :: Utils.parse_nested_query'解析这个字符串? – 2011-06-02 04:41:34
好主意,谢谢 – 2011-06-02 15:35:52