2011-08-10 41 views

回答

-17

它可能使用一些正則表達式例如

irb(main):011:0> s = "http://localhost:3000/es/editor/archives/28/show_image?x=142&y=142" 
=> "http://localhost:3000/es/editor/archives/28/show_image?x=142&y=142" 
irb(main):012:0> s[/.*\/(\d+).+x=(\d+).*y=(\d+)/,1] 
=> "28" 
irb(main):013:0> s[/.*\/(\d+).+x=(\d+).*y=(\d+)/,2] 
=> "142" 
irb(main):014:0> s[/.*\/(\d+).+x=(\d+).*y=(\d+)/,3] 
=> "142" 
irb(main):015:0> 
+2

有很多方法可能會失敗。當健壯的解析器已經存在時,我們不要使用片狀正則表達式。 –

+0

這樣一個不好的答案,使用CGI解析在dup答案鏈接中解釋。 – DGM

+0

我不同意我的答案是**窮**,而DGM的答案是**正確的**因爲兩種方法都依賴於網址的結構,我的所有三個參數以及DGM都可以獲得和ID。如果url不同,兩者都會失敗。 我同意使用CGI獲取x和y值看起來很漂亮。 – Bohdan

2

在你的控制器中,你可以做'params [:x]'和'params [:y]'。例如:

x = params[:x] 
y = params[:y] 
+1

感謝,但是...我不能這樣做,第一:我的代碼在模型中,第二個url是從html文本代碼中提取的字符串。 –

10

正確方式來完成:

url = "http://localhost:3000/es/editor/archives/28/show_image?x=142&y=142" 
uri = URI::parse(url) 
id = uri.path.split('/')[4] 
params = CGI::parse(uri.query) 
+0

你忘記了一個'id' – Bohdan

+0

更新以獲得id然後。 :) – DGM

+0

編輯是錯誤的,並建議編輯修復它被錯誤地拒絕。我已糾正它。 – DGM