Ruby on rails Rails:区分路径参数和查询字符串参数的最简单方法?

Ruby on rails Rails:区分路径参数和查询字符串参数的最简单方法?,ruby-on-rails,rails-routing,Ruby On Rails,Rails Routing,Rails router为我们提供了定义可选路径参数的简单方法: 因此,我们可以访问/users路径并获取默认区域设置,或者/ru/books并在参数[:locale]中获取区域设置 但是,使用相同的设置,我们也可以调用页面/books?locale=ru,并获得相同的效果(路径参数和查询字符串参数被同等对待,并放入参数散列中)。如果像建议的那样在操作之前在全局中处理区域设置,我们甚至可以为不应该本地化的页面设置区域设置 因此,我的问题是,最简单、最干净的方法是什么,将路径参数与查询字符串参数区

Rails router为我们提供了定义可选路径参数的简单方法:

因此,我们可以访问
/users
路径并获取默认区域设置,或者
/ru/books
并在
参数[:locale]
中获取区域设置

但是,使用相同的设置,我们也可以调用页面
/books?locale=ru
,并获得相同的效果(路径参数和查询字符串参数被同等对待,并放入
参数
散列中)。如果像建议的那样在操作之前在全局
中处理区域设置,我们甚至可以为不应该本地化的页面设置区域设置


因此,我的问题是,最简单、最干净的方法是什么,将路径参数与查询字符串参数区分开来(目的是忽略某些查询字符串参数)?

回答我自己的问题:

有一个方法
ActionDispatch::Request#query_参数
。它仅返回通过查询字符串设置的参数

还有方法
路径参数
符号化路径参数
。显然,它们返回从路径派生的参数(包括
controller
action
)。它们可以在控制器操作内的
请求中调用。(它们没有记录在
ActionDispatch::Request
下,这就是我最初错过它们的原因。)

Rails 5(2017年1月9日编辑):从Rails 5开始,符号化路径参数的方法
被删除。方法
path\u参数
现在已记录在案

# config/routes.rb
scope "(:locale)", locale: /ru|de|fr/ do
  resources :books
end