Rails simple_form默认输入值未显示

时间:2016-06-22 00:04:48

标签: ruby-on-rails simple-form

我有一个自定义文本输入,我正在尝试显示默认值。该值在HTML中设置,但不会显示在实际输入中。

我的自定义输入:

class DateTimePickerInput < SimpleForm::Inputs::Base
  def input(wrapper_options)
    template.content_tag(:div, class: "input-group", style: "width: 100%;") do
      template.concat @builder.text_field(attribute_name, input_html_options)
      template.concat span_icon
    end
  end

  def input_html_options
    super.merge({ class: 'text datetimepicker form-control', "data-date-input": "", value: default_value })
  end

  def span_icon
    template.content_tag(:span, class: "input-group-addon") do
      template.content_tag(:i, class: "material-icons") do
        "date_range"
      end
    end
  end

  def default_value
    object.send(attribute_name).to_time.strftime("%F %I:%M %p") if object.send(attribute_name).present?
  end
end

我在调用输入的方式:

<%= f.input :expired_at, as: :date_time_picker %>

我也试过没有运气:

<%= f.input :expired_at, as: :date_time_picker, input_html: { value: evaluation.expired_at } %>

我还尝试用简单的字符串default_value替换"hello"方法来测试它呈现的内容。它没有。

2 个答案:

答案 0 :(得分:1)

这个问题已经解决了。问题是我没有告诉输入将数据放入哪种格式。

通过在input_html_options方法中添加以下内容来实现解决方案:

data: { date_format: "YYYY-MM-DD hh:mm A" }

这条线现在看起来像:

super.merge({ value: default_value, class: "text datetimepicker form-control", data: { date_format: "YYYY-MM-DD hh:mm A" } })

答案 1 :(得分:0)

我可以修复一个类似的问题,将simple_format's wiki上找到的解决方案与您的解决方案合并。

输入如下:

gulpfile.js