Rails自动将查询字符串参数转换为整数

Tom*_*oli 11 ruby-on-rails ruby-on-rails-4

我正在尝试使用限制和偏移查询参数来实现一种分页形式.有没有办法确保值是整数否则抛出400错误,可能使用strong_parameters?看起来这种东西会被内置到rails中,但我找不到任何东西.

我可以手动转换查询参数,但如果可能的话,我宁愿使用更多防弹的东西.

Gla*_*eep 13

就像上面的评论者@Litmus一样,我建议使用像kaminari这样的Ruby gem 来管理分页.

但是如果你自己开始滚动,并且你关心输入清理,那么确保"offset"和"limit"参数是整数的最简单方法可能是你的控制器中的一个过滤器:

class YourController < ApplicationController

  before_filter :sanitize_page_params

  # ... other controller methods ...

  private

  def sanitize_page_params
    params[:offset] = params[:offset].to_i
    params[:limit] = params[:limit].to_i
  end

  # ... etc. ...

end
Run Code Online (Sandbox Code Playgroud)

请注意,"foo"将转换为等字符串0.

  • 由于 `before_filter` 语法在 Rails 5.0 中已弃用并在 Rails 5.1 中删除,因此几乎没有更新:使用 `before_action` 代替。 (2认同)