Rails,如何从 url 字符串获取参数?

发布于 2024-11-28 22:05:09 字数 456 浏览 0 评论 0原文

可能的重复:
如何轻松解析Rails 测试中带有参数的 URL?

抱歉我的英语...

我在 archives.rb 模型中有一个从 html 内容中获取所有 src 属性的方法,我得到的 src 如下:

http://localhost:3000/es/editor/archives/28/show_image?x=142&y=142

我需要从该网址获取参数,具体来说:id, x ,y

谢谢, 问候。

Possible Duplicate:
How do I easily parse a URL with parameters in a Rails test?

sorry for my english...

I have in my archives.rb model a method to get all src attributes from a html content, I am getting src's like:

http://localhost:3000/es/editor/archives/28/show_image?x=142&y=142

I need to get the params from that url, specifically: id, x, y

Thanks,
Regards.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

小猫一只 2024-12-05 22:05:09

正确方法:

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)

The correct approach :

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)
一笔一画续写前缘 2024-12-05 22:05:09

在您的控制器中,您可以执行“params[:x]”和“params[:y]”。例如:

x = params[:x]
y = params[:y]

In your controller you can do 'params[:x]' and 'params[:y]'. For example:

x = params[:x]
y = params[:y]
2024-12-05 22:05:09

例如,可以使用一些正则表达式来完成

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>

It might be done using some regexp for example

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>
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文