2

我有一个带有“simpleform”和“bootstrap-datepicker-rails”宝石的rails应用程序。

我尝试使视图代码更具可读性,如下所示:

f.input :birthday, :mydatefield, :options => {:icon => "calendar", :data-date => "21.12.2012", :data-format => "dd-mm-yyyy"}

此刻我写下:

<div class="input-append date" id="user_birthday" data-date="12-02-2012" data-date-format="dd-mm-yyyy">
    <%= f.input_field :birthday, :disabled => true %>
    <span class="add-on">
        <i class="icon-calendar"></i>
    </span>
</div>

或这个

<%= f.input :birthday, :wrapper => :datepicker, :wrapper_html=> {id: "user-birthday", class: "date"} do %>
    <%= f.input_field :birthday, :disabled => true %>
    <%= content_tag :span, :class => "add-on" do %>
        <%= content_tag :i, :style => "color:grey", :class => "icon-calendar" do
        end %>
    <% end %>
<% end %>

得到我的结果:

带有引导图标和日期选择器的 Simpleform

以上两者都产生了这个结果,效果很好:

<div class="control-group string required date" id="user-birthday">
    <label class="string required control-label" for="user_birthday"><abbr title="required">*</abbr> Birthday</label>
    <div class="controls">
        <div class="input-append">
            <input class="string required disabled" disabled="disabled" id="user_birthday" name="user[birthday]" size="50" type="text" />
            <span class="add-on">
                <i class="icon-calendar" style="color:grey"></i>
            </span>
        </div>
    </div>
</div>

当我尝试将变量解析到包装器时

:wrapper_html=> => {:data-date => "21-12-2012"}

它抛出错误......

我必须做什么?我对扩展宝石很陌生。

我必须写什么才能让它工作?

  • SimpleForm 包装器?
  • 应用程序/输入/datepickerInput.rb?
  • 初始化程序/datepicker.rb?
  • 辅助方法?

一个例子将非常有帮助!

提前谢谢了!

4

2 回答 2

0

我已经切换回 rails 实现的表单。对我(作为初学者)simple_form 似乎不够清楚。

对于我上面的解决方案,我创建了一个 FormBuilder:

class BootstrapFormBuilder < ActionView::Helpers::FormBuilder

  def birthday_field_with_hint_and_icons (name, *args)
    options = args.extract_options!
    birthday_field_icons(name) + hint(options[:hint])
  end

  def birthday_field_icons(name, *args)
    dd = 'data-date'
    ddf = 'data-date-format'
    content_tag :div, class: "input-append date", dd => 18.years.ago.strftime("%d-%m-%Y"), ddf => "dd-mm-yyyy", id: "user_birthday" do
      text_field(name, :disabled => 'disabled') + icon("icon-calendar")
    end
  end

  private

  def icon(icon)
    content_tag :span, class: "add-on" do
      content_tag :i, style: "color: grey;", class: icon do
      end
    end
  end

  def hint(hint)
    content_tag :span, class: "help-block" do
      hint
    end
  end
end

谢谢你的帮助!

于 2012-10-12T18:04:09.670 回答
0

您可以创建自定义字段。按照本教程执行此操作。

于 2012-10-03T12:48:38.247 回答