2012-12-01 400 views
21

我使用simple_form与引导,我想有我“记住我”复选框是内嵌在标签的左侧,作为Twitter的引导文档:http://twitter.github.com/bootstrap/base-css.html#formssimple_form与引导复选框

我表单代码如下所示:

<%= 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 %> 

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

我搞砸了什么?

回答

57

有一些这个选项,请参阅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

+0

谢谢!正是我需要的。 – hamsterdam

+0

@hamsterdam你应该将此答案标记为已接受! –

+0

非常感谢!我花了两个小时试图弄清楚:) –

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

我觉得这个人是有点简单:

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