我正在爲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