在params中传递年龄范围值

时间:2014-11-27 03:52:01

标签: ruby-on-rails

我了解如何进行特定的年龄搜索,我需要帮助的是将年龄范围搜索传递给params。

使用以下代码将params输出为:age=18&age=25

我反而希望搜索用户18..25,与特定年龄值18和25相反。

  .select1
                    .col.col3.col33 style='width:175px;'
                      label Ages
                      = select_tag :age, options_for_select((18..65),18), {class: 'small'}

                  .select5
                    .col.col4
                      label to
                      = select_tag :age, options_for_select((20..65),65), {class: 'small'}

2 个答案:

答案 0 :(得分:1)

您不能拥有两个名称相同的选择标记(:age),它们会相互覆盖。

尝试这样的事情:

= select_tag :start_age ...
= select_tag :end_age ...

然后在您的控制器中(假设您的模型User具有属性age):

User.where(age: params[:start_age]..params[:end_age])

..语法表示范围,例如5..10表示5, 6, 7, 8, 9, 10。将范围传递给where意味着“向我提供年龄为此范围内值的所有用户。”

根据控制器的复杂程度,您可能还想将“范围”逻辑提取到自己的方法中:

def index
  @users = User.where(age: user_age_range)
  ...
end


.
.
.

private

def user_age_range
  params[:start_age]..params[:end_age]
end

答案 1 :(得分:0)

传递年龄范围值age=18..25检查https://stackoverflow.com/a/53588/517483如何在控制器中解析它并转换为范围