如何从URL中提取查询字符串并将其保存在数据库中?

egy*_*ado 1 ruby ruby-on-rails nokogiri

在现有页面(90年代早期手动开发)中,我有超过1500个类似于下面的文本列表:

- Abenakis, Pancake Mix (Buckwheat), 1 kg, $4.32 Add to Cart 
Run Code Online (Sandbox Code Playgroud)

及其"添加到购物车"HTML:

<a href="http://ww6.paymentcompany.com/cf/add.cfm?userid=87378855
&amp;product=Abenakis,+Pancake+Mix+(Buckwheat),+1+kg
&amp;price=4.32
&amp;scode=ABCD012
&amp;return=www.mysite.com/food.html">Add to Cart</a>
Run Code Online (Sandbox Code Playgroud)

以下查询字符串随每个"添加到购物车" <a>锚点而变化:

&amp;product=Abenakis,+Pancake+Mix+(Buckwheat),+1+kg
&amp;price=4.32
&amp;scode=ABCD012
Run Code Online (Sandbox Code Playgroud)

我想提取URL中的所有元素并将它们保存在DB表中,然后我可以以非列表方式显示它们.

我想过使用Nokogiri,但根据我的尝试,我没有得到它.

有一个简单的方法吗?

Tyl*_*ler 5

首先,您可以使用URI.parse分离查询字词来解析您的URL .然后您可以创建一个哈希URI::decode_www_form并使用您喜欢的查询词:

uri = URI.parse("http://ww6.paymentcompany.com/cf/add.cfm?userid=87378855&product=Abenakis,+Pancake+Mix+(Buckwheat),+1+kg&price=4.32&scode=ABCD012&return=www.mysite.com/food.html")
Hash[URI::decode_www_form(uri.query)]
# => {"userid"=>"87378855", "product"=>"Abenakis, Pancake Mix (Buckwheat), 1 kg", "price"=>"4.32", "scode"=>"ABCD012", "return"=>"www.mysite.com/food.html"} 
Run Code Online (Sandbox Code Playgroud)