使用简单形式和引导程序追加和前置

时间:2013-03-08 20:27:09

标签: ruby-on-rails-3 haml simple-form

我需要能够使用bootstrap append和prepend来使用简单的表单输入标记。我可以很容易地做到这一点,但不能让他们两个都工作。这可能吗。

这里是我使用haml这是一个前置,但我需要另一个在最后,所以使用追加。

= f.input :domain, wrapper: :prepend, label: false do
  %span.add-on
    %span.icon @
  = f.input_field :domain

2 个答案:

答案 0 :(得分:0)

simple_form只包含:prepend:append的包装,但不能同时包含两者。幸运的是,构建一个可以同时执行这两者的自定义包装器非常容易。只需复制&粘贴其中一个包装并稍微修改它。

这是我的解决方案:

配置/初始化/ simple_form.rb

config.wrappers :prepend_append, :tag => 'div', :class => "control-group", :error_class => 'error' do |b|
  b.use :html5
  b.use :placeholder
  b.use :label
  b.wrapper :tag => 'div', :class => 'controls' do |input|
    input.wrapper :tag => 'div', :class => 'input-prepend input-append' do |pa|
      pa.use :input
    end
    input.use :hint,  :wrap_with => { :tag => 'span', :class => 'help-block' }
    input.use :error, :wrap_with => { :tag => 'span', :class => 'help-inline' }
  end
end

并且,在您看来:

= f.input :url, wrapper: :prepend_append, label: false do
  %span.add-on something
  = f.input_field :url, input_html: { class: "span2" }
  %span.add-on something

最后,将此添加到您的css:

.input-prepend .add-on,
.input-append input {
  float: left;
}

希望有所帮助。务必重启服务器。

答案 1 :(得分:0)

最简单的方法就是:

<%= f.input :field, :wrapper_html => {class: "input-prepend input-append"} do %>
  <span class="add-on">$</span>
    <%= f.input_field :field %>
  <span class="add-on">%</span>
<% end %>