【问题标题】:Rails How to give options in date time selectRails如何在日期时间选择中给出选项
【发布时间】:2017-11-23 00:06:01
【问题描述】:

我正在尝试为表单实现 datetime_select 选项。我之前使用了一个简单的日期选择器,如下所示,但要求已经改变。

<%= f.datetime_select :ends_at, :start_year => Date.current.year %>

我想要实现的是只给用户三个选项:“一小时”、“两小时”、“三小时”供选择。通过表单作为 POST 发送的所选选项的相应值将从按下提交按钮的时间开始计算。

如何为日期时间数据类型的用户提供这些选项?

【问题讨论】:

    标签: ruby-on-rails arrays forms datetime ruby-on-rails-5


    【解决方案1】:

    好的,你可以这样做:

    在您的模型中定义:

    TIMER = [{"time"=>"One Hour", "val"=>"1"}, {"time"=>"Two Hours", "val"=>"2"}, {"time"=>"Three Hours", "val"=>"3"}]
    

    在您的表单中使用不同的选择字段:

    <%= f.select :time_to_end, options_for_select(Model::TIMER.map { |obj| [obj['time'], obj['val']] }) %>
    

    然后在模型中允许time_to_end 参数作为attr_accesible

    attr_accessible :time_to_end
    

    另外,添加一个保存前回调来更改ends_at 字段:

    before_save :update_ends_at_field
    
    private
    def update_ends_at_field
       self.ends_at = Time.now + time_to_end.to_i.hours 
    end
    

    我没有测试上面的代码。希望你明白了。

    【讨论】:

    • 感谢您的指导。我最终定义了 TIMER = [{"time"=>"Half Hour", "val"=> DateTime.now + 0.5.hour},{"time"=>"One Hour", "val"=> DateTime. now + 1.hour}, {"time"=>"One Day", "val"=> DateTime.now + 24.hour}, {"time"=>"Three Days", "val"=> DateTime. now + 3.day}, {"time"=>"Seven Days", "val"=> DateTime.now + 7.day}] 在 Applicationhelper 中并以 Ends After: 的形式调用它
    • 哦,太好了。然后,您可以通过接受答案来结束问题。
    【解决方案2】:

    我最终使用了

    <%= f.select :ends_at, options_for_select(ApplicationHelper::TIMER.map { |obj| [obj['time'], obj['val']] })%>
    

    在表单本身中。

    其中Timer定义为:

    module ApplicationHelper
        TIMENOW = DateTime.now
        TIMER = [{"time"=>"Half Hour", "val"=> TIMENOW + 0.5.hour},{"time"=>"One Hour", "val"=> TIMENOW + 1.hour}, {"time"=>"One Day", "val"=> TIMENOW + 24.hour}, {"time"=>"Three Days", "val"=> TIMENOW + 3.day}, {"time"=>"Seven Days", "val"=> TIMENOW + 7.day}]
    end
    

    在应用程序助手中

    【讨论】:

      猜你喜欢
      • 2011-02-21
      • 2020-02-21
      • 2015-11-13
      • 2011-09-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多