我了解如何进行特定的年龄搜索,我需要帮助的是将年龄范围搜索传递给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'}
答案 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如何在控制器中解析它并转换为范围