【问题标题】:How do I order a collection in decreasing order?如何按降序排列收藏?
【发布时间】:2015-12-13 14:33:12
【问题描述】:

我正在构建一个表单来选择从 2010 年到当前年份的年份。

= f.input :duration do
    = f.select :duration, options_for_select(2010..@currentyear.to_i)

它给了我一个下拉列表:

但如果我尝试按降序排列(如 2015、2014、2013、2012、2011、2010),

options_for_select(@currentyear.to_i..2010)

我得到一个空白下拉菜单。我该怎么办?

【问题讨论】:

  • Ruby 不支持降序范围,你可以试试(2010..@currentyear.to_i).to_a.reverse
  • 感谢您的回答。那么还有其他方法可以实现吗?只是用户如果选择 2015 会在我的应用程序中找到正确的数据,所以我希望它在顶部

标签: ruby-on-rails ruby haml simple-form


【解决方案1】:

Ruby 不支持降序范围,你可以试试(2010..@currentyear.to_i).to_a.reverse

【讨论】:

  • #<:safebuffer:0x000000105149c8>
  • 上述代码 sn-p 是返回数组的有效 ruby​​ 代码,请确保在代码中正确放置。 options_for_select 接受一个数组作为输入,因此它应该可以工作。
  • 是的,它是正确的。正如 spickermann 在他的回答中所指出的那样,我没有将该陈述括在括号中。初学者的错误。谢谢你的回答
  • @user2839702 不接受正确和第一个给出的答案令人沮丧。
  • 是的,但是斯派克曼的回答告诉我该怎么做..让我的代码正常工作..所以他得到了正确的答案如果我可以选择两个正确的答案我会..我是一个初学者我什至不能投票给任何答案!
【解决方案2】:

改变这一行

options_for_select(@currentyear.to_i..2010)

到

options_for_select((2010..@currentyear.to_i).to_a.reverse)

【讨论】:

  • 是的!这行得通!你是个天才。所以在这里我只是将我的范围转换为一个数组并以相反的顺序对其进行排序
猜你喜欢
  • 1970-01-01
  • 2011-05-10
  • 1970-01-01
  • 2022-01-06
  • 2015-07-31
  • 2021-05-05
  • 2012-10-18
  • 2012-09-30
  • 2012-03-06
相关资源
最近更新 更多