我是Ruby on Rails的新手,我正在尝试构建一个与此完全相同的截止日期计算器:(click here)。
从超链接示例中可以看出,我的截止日期计算器将允许用户在表单字段中输入给定的数字,以反映截止日期之前的天数。我的截止日期计算器然后将该数字添加到用户选择的给定日期。然后,计算器将根据这两个用户输入打印截止日期的结果日期。
示例:想象一下,用户会收到一封信,上面写着“你从2014年2月5日开始有45天的时间邮寄对这封信的回复......”并希望计算出等于45天之后的日期14年2月5日。用户输入“45”(天)和“2/5/14”(开始日期)并单击“计算”按钮。然后该网站将显示“您的截止日期为2014年3月22日星期六”。所以这就是我到目前为止所拥有的......
我的app / views / pages / about_page.html.erb文件包含以下代码块:
<div class="row">
<div class="col-xs-2">
<%= form_tag do %>
<%= number_field_tag 'Days' %>
<p>AFTER</p>
<%= date_select('Start', 'start_date') %>
<%= submit_tag 'Calculate' %>
<% end %>
<div>
<%= @deadline %>
</div>
</div>
</div>
我的app / assets / controllers / pages_controller.rb文件包含以下代码块:
class PagesController < ApplicationController
* * * *
def about_page
@days = params[:Days]
@start = params[:Start]
@deadline = 'Print the date that is X days after the start date selected by the user.'
end
* * * *
private
def page_params
params.require(:page).permit(:name, :position, :visible)
end
所以,我的问题是,如何让Rails将用户的“:Days”输入添加到用户的“开始”日期输入中,然后打印生成的“截止日期”日期?我已经无休止地寻找解决方案,但还没有找到任何清楚解释如何计算未来日期的内容,用户同时输入开始日期和开始日期之后的天数。请帮忙!
答案 0 :(得分:0)
您只需使用+运算符将日期添加到日期,例如
Date.today + 10 => Sun, 16 Feb 2014
在您的情况下,这将转换为
@deadline = Date.new(params[:Start][:year].to_i, params[:Start][:month].to_i, params[:Start][:day].to_i) + params[:Days].to_i