Rails:在提交日期中添加月份或年份

时间:2013-11-01 11:16:14

标签: ruby-on-rails forms date

我有一个名为“Funevent”的ActiveRecord模型。 Funevent有:dateeventbegins和:dateeventends。 我的视图允许客户端通过在表单中​​使用date_select来选择:dateeventbegins:

<%= f.date_select :dateeventbegins, :start_year => Time.now.year - 1, :end_year => Time.now.year %>

然后以相同的形式我允许客户指定此事件持续多长时间而不是直接选择结束日期(我有充分的理由)。所以我有:

<%= select_tag :goodforX, options_for_select(['Never ending', '1','2','3','4','5','6','7','8','9','10','11']) %>
<%= select_tag :goodforY, options_for_select(['Never ending', 'Months','Years']) %>

当这些数据返回到Controller时,我需要能够增加:dateeventbegins由客户在表单中指定的内容,并将其设置为my:dateeventends如果客户端没有指定这是一个“永无止境”的事件。

所以现在在我的控制器中我尝试了这个,看看我是否可以通过手动递增提交日期来开始简单,然后转移到客户指定的更复杂的递增部分。我开始时:

if params[:goodforX] != "Never ending" or params[:goodforY] != "Never ending"
  params[:funevent][:dateeventends] = params[:funevent][:dateeventbegins].todate + 3.months 
end

我的第一个问题是这个启动步骤不起作用。我收到了这个错误:

  

nil的未定义方法`todate':NilClass

也许它与客户指定的日期如何仅仅作为日期进入控制器有关。相反,它看起来像控制器看到的那样:

"funevent"=>{ 
"dateeventbegins(1i)"=>"2014",
"dateeventbegins(2i)"=>"1",
"dateeventbegins(3i)"=>"1" }

如何访问这些提交的值并通过客户端指定的度量递增它们:goodforX和:goodforY动态创建my:dateeventends?

0 个答案:

没有答案