使用简单的表单轨道删除日期选择中的日期时间和时间分隔符

时间:2014-06-14 07:45:01

标签: ruby-on-rails datetime simple-form separator

如何在日期中删除日期时间分隔符和时间分隔符,选择由gem创建的名为simple_form?

我认为我必须覆盖simple_form用于创建日期选择的initialize方法,或者在我的表单输入中传递哈希选项。但它没有用。

我尝试这样的事情:

f.input :as => :date, options:{:date_separator => '', :time_separator => ''}

感谢帮助我

4 个答案:

答案 0 :(得分:3)

您必须进行此更改才能使其正常工作:

f.input :your_attribute, as: :date, date_separator: '', time_separator: ''
# or
f.input :your_attribute, as: :date, date_separator: '<span>:</span>'

这两个应该有效。

答案 1 :(得分:0)

你不能只使用simple_form。

我建议在控制器中处理。

protected

def process_business_hour(params)
    params[:business_hour] = "#{params[:"business_hour(4i)"].to_i}:#{params[:"business_hour(5i)"].to_i}"
    return params
end

这真是一团糟,但如果有其他好方法(只使用simple_form),请告诉我。


更新

<%= f.date_select 'business_hour_mon_start', {minute_step: 5}, class: "timeselect timeselect_mon", onChange: "javascript:selectBusinessHour(this.value)" %>~
<%= f.time_select 'business_hour_mon_end', {minute_step: 5, ignore_date: :true}, class: "timeselect timeselect_mon", onChange: "javascript:selectBusinessHour(this.value)" %>

这种方法可以..

http://i.stack.imgur.com/5Z0ur.png

检查上面的图片..

如果还不够,你可以像这样分手。

<select id="parkinglot_business_hour_mon_start_1i" name="parkinglot[business_hour_mon_start(1i)]" onchange="javascript:selectBusinessHour(this.value)">

参见(1i)

答案 2 :(得分:0)

上传另一个答案,因为我没有超过10个或更多声誉。

所以我无法添加图片或两个以上的链接..


我最后的建议是混合使用jQuery datepicker,而不仅仅是simple_form。

http://oi58.tinypic.com/2d1mps2.jpg

检查上面的图片..

http://jqueryui.com/datepicker/

jQuery datepicker有很好的文档记录,易于实现。

<input type="text" id="date_start" class="form-control" value="<%= 1.month.ago.to_date %>">

<script>
$(function() {
  $( "#date_start" ).datepicker({
    dateFormat: "yy-mm-dd",
    defaultDate: "-1w -1d",
    changeMonth: true,
    maxDate: "-1",
    onClose: function( selectedDate ) {
      $( "#date_start" ).datepicker( "option", selectedDate );
    }
  });
});
</script>
抱歉,这个答案不是一个直接的解决方案。

自定义simple_form总是非常烦人的慢跑。

答案 3 :(得分:0)

这是一个不理想的解决方案,但有效:

<script>
    var el = $("#mydiv");
    el.html(el.html().replace("—", ""));
    el.html(el.html().replace(":", ""));
</script>