我有一个名为“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']) %>
当这些数据返回到控制器时,我需要能够通过客户端在表单中指定的内容来增加:dateeventbegins 并将其设置为我的 :dateeventends 如果客户端没有指定这是一个“永无止境”的事件。
所以现在在我的控制器中,我尝试了这个,看看我是否可以通过手动增加提交的日期来开始简单,然后进入更复杂的部分,即按照客户指定的增加。我开始:
if params[:goodforX] != "Never ending" or params[:goodforY] != "Never ending"
params[:funevent][:dateeventends] = params[:funevent][:dateeventbegins].todate + 3.months
end
我的第一个问题是这个启动步骤不起作用。我收到此错误:
nil:NilClass 的未定义方法“todate”
也许这与客户指定的日期不纯粹作为日期进入控制器有关。相反,控制器看到的是这样的:
"funevent"=>{
"dateeventbegins(1i)"=>"2014",
"dateeventbegins(2i)"=>"1",
"dateeventbegins(3i)"=>"1" }
如何访问这些提交的值并通过客户在 :goodforX 和 :goodforY 中指定的度量来增加它们以动态创建我的 :dateeventends?