保存多个日期范围简单形式

时间:2015-10-23 12:33:35

标签: ruby-on-rails forms activerecord simple-form

我有2个模特:空缺和vacancy_schedule

Vacancy has_many :vacancy_schedules
Vacancy_schedule belongs_to :vacancy

在我的vacancy_schedule中,我想保存 vacancy_id,start_date,end_date,start_time,end_time

我看了一下嵌套表单,我想用嵌套表单做这件事:

class Vacancy < ActiveRecord::Base
  has_many :vacancy_schedueles
  accepts_nested_attributes_for :vacancy_schedueles
end

但是我如何在我的视野中显示这个?

我希望能够按下+按钮并继续在彼此之下添加日期。

我猜我只想在另一个模型中添加1个日期,我必须做这样的事情:

<%= f.simple_fields_for :vacancyscheduele do |t| %>
  <%= t.input :start_date, :as => :date_picker, :label => false%>
  <%= t.input :end_date, :as => :date_picker, :label => false%>
  <%= t.input :end_hour %>
  <%= t.input :end_hour %>
<% end %>

但是当我想要添加一个+号并突然显示第二个simple_fields_for,用户可以输入下一个日期时,我不知道从哪里开始。

当他按下提交时,它会同时提交或者当他删除其中一个日期时正确删除。

在vacancy_schedule中,最终结果应该是这样的:

Vacancy_id / start_date / end_date    / start_time / end_time
1          /  1/1/2015  / 2/1/2015    / 14:30      / 19:30
1          /  5/1/2015  / 6/1/2015    / 11:30      / 12:30
1          /  10/1/2015 / 11/1/2015   / 16:30      / 19:30
2          /  6/1/2015  / 7/1/2015    / 14:30      / 19:30
etc etc

非常感谢任何帮助或提示。

1 个答案:

答案 0 :(得分:2)

使用以下代码:

在config / initializers&amp;中创建一个date_format.rb文件。写下面的代码:

类ActiveSupport :: TimeWithZone
   def as_date(options = {})
      的strftime(&#39;%间 - %D-%Y&#39;)
  结束

def as_time(options = {})
    的strftime(&#39;%I:%M&#39;)
  端

在视图中,编写以下代码:
     &lt;%= f.simple_fields_for:vacancyscheduele do | t | %GT;
        &lt;%= t.start_date.as_date%&gt;
     &lt;%= t.end_date.as_date%&gt;
     &lt;%= t.start_hour.as_time%&gt;
     &lt;%= t.end_hour.as_time%&gt;
     &lt;%end%&gt;