【问题标题】:extract multiple params from url从 url 中提取多个参数
【发布时间】:2025-09-05 05:15:01
【问题描述】:

我有一个 rails 应用程序,我想从这个 url 中提取 2 个不同的 id:

http://localhost:3000/shopping/suppliers/2/products/1

查看development.log 似乎两个值都存在。

我想知道如何将这些参数公开给控制器,只是params[:supplier_id]params[:id]

Started GET "/shopping/suppliers/2/products/1" for 127.0.0.1 at 2016-04-22 18:28:19 +1000
Processing by Shopping::ProductsController#show as HTML
  Parameters: {"supplier_id"=>"2", "id"=>"1"}
  Product Load (30.1ms)  SELECT  "products".* FROM "products" WHERE "products"."permalink" = $1  ORDER BY "products"."id" ASC LIMIT 1  [["permalink", "1"]]
  Product Load (0.8ms)  SELECT  "products".* FROM "products" WHERE "products"."id" = $1 LIMIT 1  [["id", 1]]
  User Load (19.6ms)  SELECT  "users".* FROM "users" WHERE "users"."id" = $1  ORDER BY "users"."id" ASC LIMIT 1  [["id", 1]]
  CACHE (0.0ms)  SELECT  "products".* FROM "products" WHERE "products"."permalink" = $1  ORDER BY "products"."id" ASC LIMIT 1  [["permalink", "1"]]
  CACHE (0.0ms)  SELECT  "products".* FROM "products" WHERE "products"."id" = $1 LIMIT 1  [["id", "1"]]
  Rendered shopping/products/show.html.haml within layouts/mdl (0.3ms)
  Rendered shared/_meta_data.html.haml (0.8ms)
  Rendered shared/_top_cart.html.haml (0.1ms)
  Rendered shared/_compact_menu.html.haml (4.5ms)
Completed 200 OK in 109ms (Views: 46.2ms | ActiveRecord: 50.8ms)

【问题讨论】:

  • 是的!您可以通过 params[:supplier_id] 和 params[:id] 访问这些值。

标签: ruby-on-rails model-view-controller parameter-passing


【解决方案1】:

是的,您应该能够使用这些键访问您的值:

params[:supplier_id]
params[:id]

奇怪的是为什么您在发布问题之前没有尝试过自己的建议。 :)

【讨论】:

  • 这是最好的方法,还是有更清洁的方法?
  • 这肯定是最干净的方式。你觉得它脏吗?