我希望让我的用户决定某些内容可以出现的时间段。
it's divide into two partial:
1.for date (like 2016,01,01~2016,12,20)
2.for hour (like 11:00~13:00)
用户可以为内容添加多个时间段设置, 例如
我该如何实现它?为内容表添加一个包含四个时间列(开始日期,结束日期,开始时间,结束时间)的关联表或任何有用的宝石?
答案 0 :(得分:0)
嘿,我在手机上,但是当我回到家时会更新这个答案。这基本上就是你要找的东西,但数据窗口是在某些天而不是dateTime之间,所以你必须增加小时/分钟等。它也使用SimpleForm gem但是你可以使用rails regular_for来轻松地将表单修改为jive。使用jquery datepicker,因为它非常棒且易于配置。需要注意的关键是你的jquery datepicker输入是一个字符串,所以你必须重新格式化它,如下所示。在下面的视图中,您需要为要为其添加日期选择器的每个表单元素添加一个类(我使用了类' datepicker'):
<%= simple_form_for @ionit_tank_input, url: controller_path_here, html: { multipart: true, method: :post, class: "whatever_css_styling_classes", role: "form"} do |f| %>
<%= f.error_notification %>
<div class="form-group">
<%= f.input :date1, as: :string, :placeholder => 'From (MM/DD/YYYY)', label: false, required: false, input_html: {class: "form-control form-input-colorss datepicker"} %>
</div>
<div class="form-group">
<%= f.input :date2, as: :string, :placeholder => 'To (MM/DD/YYYY)', label: false, required: false, input_html: {class: "form-control form-input-colorss datepicker"} %>
</div>
<%= f.submit "See History", class: "btn btn-primary block full-width m-b" %>
<% end %>
安装了jquery datepicker后,将此脚本添加到相应的资产js文件中。
<script type="text/javascript">
$('input.datepicker').datepicker({
keyboardNavigation: false,
forceParse: false,
autoclose: true
});
</script>
然后在您的控制器中,您可以格式化根据需要选择的传入日期/时间。下面的代码是将其格式化为一个月/日/年,但您也可以添加HH:MM只记得通过表单输入的用户输入将是一个字符串,因此您需要使用strptime进行转换。
from = DateTime.strptime("#{params[:ionit_tank_input][:date1]}", '%m/%d/%Y')
to = DateTime.strptime("#{params[:ionit_tank_input][:date2]}", '%m/%d/%Y')
to = to + 1.day
@inputs = @tank.ionit_tank_inputs.where(["created_at > ? and created_at < ?", from, to ])
@inputs现在是您在这两天之间选择的信息。如果您愿意,可以使用日期时间。