Rails截止日期计算器帮助:未来日期=用户选择的数字+用户选择的日期

时间:2014-02-06 05:34:45

标签: ruby-on-rails ruby forms date datetime

我是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”输入添加到用户的“开始”日期输入中,然后打印生成的“截止日期”日期?我已经无休止地寻找解决方案,但还没有找到任何清楚解释如何计算未来日期的内容,用户同时输入开始日期和开始日期之后的天数。请帮忙!

1 个答案:

答案 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