2012-02-08 21 views
2

我目前正在實施對我們的項目openSNP.org分佈式註釋系統標準,但是,我已經遇到一個問題,查詢字符串查詢字符串操作Rails中,當相同的密鑰存在

的標準規定了用戶如何使用查詢字符串/特徵來訪問基因組(或任何其他生物數據源)的多個區域?segment = 1:1,999; segment = 2:100,1000,其中冒號前的數字是染色體和另外兩個數字是染色體上的起始和終止位置。

無限分段= X:a,b字符串是允許的,以便用戶只需使用一個查詢即可查看不同的位置和染色體。

我對Rails的問題是,這個查詢字符串不能用params-array開箱即用 - 畢竟,我總是擁有相同的密鑰,最後一個密鑰總是覆蓋前一個密鑰,所以最後我在params數組中只有「segment」=>「2:100,1000」,「segment」=>「1:1,999」被覆蓋。

我想過使用JavaScript來改變查詢字符串之前,它被傳遞到控制器,但所使用的視圖是基本的XML和實現JavaScript似乎在這種情況下矯枉過正。有沒有辦法在創建params數組之前訪問Rails中的查詢字符串,以便我可以簡單地用某個計數器替換所有的「段」,或者只是將所有的「段」都踢出去並保持座標?

回答

4

Rails使用Rack::Utils.parse_nested_query它處理查詢字符串中你見過的方式:

>> Rack::Utils.parse_nested_query "segment=1:1,999;segment=2:100,1000" 
=> {"segment"=>"2:100,1000"} 

但是,您可以使用request.query_string得到了Rails請求對象的原始查詢字符串,然後用CGI.parse它處理的事情更像你之後:

>> CGI.parse "segment=1:1,999;segment=2:100,1000" 
=> {"segment"=>["1:1,999", "2:100,1000"]} 
+0

這很完美!正是我在找的,謝謝! – Philipp 2012-02-08 00:52:22

相關問題