带有Bootstrap的simple_form复选框

时间:2012-12-01 05:47:10

标签: ruby twitter-bootstrap erb simple-form

我正在使用带有Bootstrap的simple_form,我希望我的“记住我”复选框内嵌在标签的左侧,如Twitter Bootstrap文档中所示:http://twitter.github.com/bootstrap/base-css.html#forms

我的表单代码如下:

<%= simple_form_for(resource, :as => resource_name, :url => session_path(resource_name), :html => { :class => 'well'}) do |f| %>
    <%= f.input :email %>
    <%= f.input :password %>
    <%= f.input :remember_me, :as => :boolean if devise_mapping.rememberable?  %>

    <%= f.button :submit, "Sign In" %>

<% end %>

结果是复选框顶部的“记住我”标签。

我搞砸了什么?

3 个答案:

答案 0 :(得分:58)

有很多选项,请参阅here了解更多内容:

最简单的(我认为)是在复选框上使用:label => false:inline_label => true来更改标签所在HTML的位置。

<%= f.input :remember_me, :as => :boolean, :label => false, :inline_label => true if devise_mapping.rememberable? %>

这为我产生了这样的东西:

enter image description here

答案 1 :(得分:5)

@ alol的答案适用于垂直表单(字段顶部的标签),但如果您正在执行水平表单,并且您希望复选框标签显示在复选框的右侧,但仍保留表单的布局,你可以这样做:

f.input :remember_me, :as => :boolean, :label => "&nbsp;", :inline_label => true if devise_mapping.rememberable?

如果您需要,还可以传递特定标签作为内联标签而不是true

f.input :remember_me, :as => :boolean, :label => "&nbsp;", :inline_label => "My Label" if devise_mapping.rememberable?

答案 2 :(得分:2)

我认为这个有点简单:

f.input :remember_me, wrapper: :vertical_boolean, as: :boolean  if devise_mapping.rememberable?

当安装时,包装器至少从config/initializers/simple_form_bootstrap.rb捆绑在simple_form 3.1.0rc2中:

rails g simple_form:install --bootstrap