在rails中转换路由参数

时间:2011-08-09 18:20:59

标签: ruby-on-rails ruby ruby-on-rails-3

使用简单的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

1 个答案:

答案 0 :(得分:3)

快速示例from here

match '/:id' => 'posts#show', :constraints => {:id => /^\d/}

然后你必须做

params[:id].to_i

在控制器动作中明确地强制转换它。我不确定还有另一种方法可以直接在routes.rb中执行此操作,而无需修补Rails如何收集params。

取自Ruby on Rails Guides

  

params [:ids]的值现在为[“1”,“2”,“3”]。请注意,参数值始终是字符串; Rails不会尝试猜测或转换类型。