加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – 使用simple_form在rails上的ruby上填充自定义

发布时间:2020-12-17 03:54:49 所属栏目:百科 来源:网络整理
导读:我是轨道上的 ruby和 ruby的初学者,我正在尝试使用simple_form创建一个复杂的表单.一切都在运作,但我想以一种非常具体的方式自定义“时间”字段. 我用的时候: %= f.input :hour % 它呈现两个选择字段,即填充了00到23之间选项的“小时”字段,以及填充了00到5
我是轨道上的 ruby和 ruby的初学者,我正在尝试使用simple_form创建一个复杂的表单.一切都在运作,但我想以一种非常具体的方式自定义“时间”字段.

我用的时候:

<%= f.input :hour %>

它呈现两个选择字段,即填充了00到23之间选项的“小时”字段,以及填充了00到59之间选项的“分钟”字段.

但这不是我想要的.我希望用一个具有自定义预先填充选项的选择字段替换当前两个选择字段的使用,时间范围从早上8点到晚上22点,以15分钟为增量,并且还有选项的文本显示时间与语法“8h00”,“8h15”,“8h30”,“8h45”,“9h00”,“18h00”,“18h15”,“18h30”,“18h45”等等.“21h45”是最后一个选项.

我已经设法使用这些选项更多地定制它:

<%= f.input :hour,:as => :time,:minute_step => 15 %>

虽然这解决了15分钟增量问题,但它仍然呈现两个选择字段.

这将是我想要为我渲染simple_form的html等价物:

<select name="hour">
<option value="08:00:00">08h00</option>
<option value="08:15:00">08h15</option>
<option value="08:30:00">08h30</option>
<option value="08:45:00">08h45</option>
...
<option value="21:30:00">21h30</option>
<option value="21:45:00">21h45</option>
</select>

我很确定这很容易使用从8..21循环的集合实现,然后再次使用’00’,’15’,’30’和’45’循环,然后在语法中输出选项我想要(小时“h”分钟).

我想创建一个自定义的“日期”字段,因为在一个表单中会有很多日期字段(对于我正在创建的“约会”相关应用程序),但由于我是ruby on rails的初学者,我’我真的迷失了实现这一目标最聪明的方法.我不确定我是否应该在simple_form中实现自定义字段,如果我应该使用辅助函数,或者是什么.

解决方法

在Simpleform的邮件列表的Carlos Antonio da Silva的帮助下,我们通过创建这样的自定义输入来修复此问题:

应用程序/输入/ hour_input.rb

class HourInput < SimpleForm::Inputs::Base
  def input
    @builder.select(attribute_name,hour_options,{ :selected => selected_value },{ :class => "input-medium" })
  end

  private

  # The "Selecione..." string could also be translated with something like: I18n.t("helpers.select.prompt')
  def hour_options
    hour = [['Selecione...','00:00:00']]
    (8..21).each do |h|
      %w(00 15 30 45).each do |m|
        hour.push ["#{h}h#{m}","#{"%02d" % h}:#{m}:00"]
      end
    end
    hour
  end

  def selected_value
    value = object.send(attribute_name)
    value && value.strftime("%H:%M:%S")
  end
end

然后<%= f.input:hora,:as => :小时%>在视图中.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读