使用简单的API,我注意到我的路由测试失败了,因为我的:id
参数是字符串,我将它们与整数值进行比较。有没有办法通过routes.rb以某种方式自动转换请求参数?例如,给定以下路由(/ profile / 1),我希望params[:id]
为整数(1)而不是字符串(“1”):
namespace :api do
namespace :v1 do
scope '/profile' do
get ':id' => 'users#show', :id => /\d+/
end
end
end
答案 0 :(得分:3)
快速示例from here:
match '/:id' => 'posts#show', :constraints => {:id => /^\d/}
然后你必须做
params[:id].to_i
在控制器动作中明确地强制转换它。我不确定还有另一种方法可以直接在routes.rb中执行此操作,而无需修补Rails如何收集params。
params [:ids]的值现在为[“1”,“2”,“3”]。请注意,参数值始终是字符串; Rails不会尝试猜测或转换类型。