【问题标题】:Passing age range values in params在参数中传递年龄范围值
【发布时间】:2014-11-27 12:42:04
【问题描述】:

我了解如何执行特定年龄搜索,我需要帮助的是传入参数进行年龄范围搜索。

参数下面的代码输出为: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'}

【问题讨论】:

    标签: ruby-on-rails


    【解决方案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
    

    【讨论】:

      【解决方案2】:

      传递年龄愤怒值,如age=18..25check https://stackoverflow.com/a/53588/517483 如何在控制器中解析它并隐蔽到范围

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2021-10-22
        • 2015-04-14
        • 2015-07-17
        • 2016-11-24
        • 2017-04-09
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多