【问题标题】:Bootstrap input-group wrapper with simple_form使用 simple_form 引导输入组包装器
【发布时间】:2015-05-21 05:39:00
【问题描述】:

我将 simple_form 与引导包装器一起使用,但不知道该怎么做。

我想生成这样的输入:

<div class="form-group string optional event_start_time_date ">
  <label class="string optional control-label" for="event_start_time_date">Start date</label>
  <div class="input-group date" id="date_picker">
    <input class="string required form-control" type="text" name="event[start_time_date]" id="event_start_time_date">
    <span class="input-group-addon">
      <span class="glyphicon glyphicon-calendar"></span>
    </span>
  </div>
</div>

我的包装看起来像这样:

config.wrappers :input_group, tag: 'div', class: 'form-group', error_class: 'has-error' do |b|
  b.use :label, class: 'control-label'
  b.wrapper :input_group_div, tag: 'div', class: 'input-group' do |ba|
    ba.use :input, class: 'form-control'
  end

  b.use :error, wrap_with: { tag: 'span', class: 'help-block' }
  b.use :hint,  wrap_with: { tag: 'p', class: 'help-block' }
end

对于

&lt;%= f.input :start_time_date, as: :string, required: false, label: "Start date", wrapper: :input_group, :input_group_div_html {class: "date", id: "date-picker"} %&gt;

它生成下面的 html 输出:

<div class="form-group string optional event_start_time_date">
  <label class="string optional control-label" for="event_start_time_date">Start time</label>
  <div class="input-group date" id="date-picker">
    <input class="string optional form-control" type="text" name="event[start_time_date]" id="event_start_time_date">
  </div>
</div>

现在的区别:

  1. &lt;span class="input-group-addon"&gt;这个是必须的,应该由wrapper生成,但是不知道怎么在wrapper中生成。
  2. &lt;span class="glyphicon glyphicon-calendar"&gt;&lt;/span&gt; - 不同的输入组在这里将有不同的类和不同的跨度文本,最好我可以将它作为&lt;%= f.input ... 中的某个选项传递

【问题讨论】:

标签: ruby-on-rails twitter-bootstrap ruby-on-rails-4 simple-form


【解决方案1】:
  = simple_form_for(current_account) do |f|
    = f.input :slug, required: true, label: 'URL da página' do
      .input-group
        .input-group-prepend
          span.input-group-text https://www.immobilier.com.br/
        = f.input_field :slug, class: 'form-control'

【讨论】:

    【解决方案2】:

    您可以简单地在 和 之间添加一个 div。工作正常:

      <%= f.input :start_time_date, as: :string, required: false, label: "Start date" do %>
       <div class="input-group">
          <%= f.input_field :start_time_date, class: "form-control" %>
          <span class="input-group-addon">
            <span class="glyphicon glyphicon-calendar"></span>
          </span>
       </div>
      <% end %>
    

    【讨论】:

      【解决方案3】:

      同样的问题这样解决。

      config.wrappers :input_group, tag: 'div', class: 'form-group',  error_class: 'has-error' do |b|
        b.use :label, class: 'control-label'
        b.wrapper :input_group_div, tag: 'div', class: 'input-group' do |ba|
          ba.use :input, class: 'form-control'
          ba.wrapper tag: 'span', class: 'input-group-addon' do |append|
            ba.wrapper tag: 'span', class: 'glyphicon glyphicon-calendar' do |i|
            end
          end
        end
      
        b.use :error, wrap_with: { tag: 'span', class: 'help-block' }
        b.use :hint,  wrap_with: { tag: 'p', class: 'help-block' }
      end
      

      【讨论】:

        【解决方案4】:

        您的包装器在我看来还不错,但是您视图中用于呈现该字段的代码需要进行一些更改:

        <%= f.input :start_time_date, as: :string, required: false, label: "Start date" do %>
          <%= f.input_field :start_time_date, class: "form-control" %>
          <span class="input-group-addon">
            <span class="glyphicon glyphicon-calendar"></span>
          </span>
        <% end %>
        

        通过将块传递给输入字段,您可以将日历图标添加到输入字段。 f.input_field 辅助方法渲染实际输入字段,外部f.input 用于匹配正确的包装器。

        有关将 simple_form 与 Bootstraps 输入组一起使用的更多信息和竞争示例,您可以查看我的 blog post

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2022-08-16
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多