rails params [:month]剥离前导零,导致错误匹配

时间:2014-03-20 20:38:14

标签: sql ruby-on-rails ruby

在我的应用中,当用户访问finances/trends/2014/03时,我的trends_controller

中会执行选择查询
@expenses = Expense.select("name, amount, id, created_at").where(:user_id => current_user.id).where(["strftime('%Y', created_at) = ? AND strftime('%m', created_at) = ?", params[:year], params[:month] ])
@expenses_by_month = @expenses.group_by { |expense| expense.created_at.beginning_of_month }

如果查询返回结果,则呈现页面,否则会发生重定向。这一切似乎都很好。

当我尝试将params[:month]传递到索引页面上的链接时出现问题,并且:month中的前导零似乎被剥离,因此链接将返回{{1而不是select语句所需的finances/trends/2014/3(因为在db中,created_at值存储为2014-03天,当然)。

路线:

finances/trends/2014/03

index.html.erb:

get "finances/trends/:year/:month" => "trends#month", :as => :month_trends

我知道select语句中的%m应该将月份作为填充值返回,所以我根本不确定导致这个的原因。

1 个答案:

答案 0 :(得分:0)

尝试一些直接的ruby方式,如果可行的话。这是如何

"3".rjust(2,"0") #=> 03
"3".ljust(2,"0") #=> 30

month=3
month.to_s.rjust(2,"0") #=> 03