Rails,使用FormBuilder和Devise标记嵌套HTML,带有Bootstrap标记

mok*_*gio 4 forms markup ruby-on-rails devise twitter-bootstrap

我正在研究Rails 3.1应用程序的前端部分.我们使用Twitter Bootstrap作为CSS框架,Devise作为身份验证管理器,使用I18n gem进行本地化.

这是带有标签的复选框的设计语法

<%= f.label :remember_me %>
<%= f.check_box :remember_me %>
Run Code Online (Sandbox Code Playgroud)

这当然是生成的HTML

<label for="user_remember_me">Ricordati di me</label>
<input name="user[remember_me]" type="hidden" value="0">
<input id="user_remember_me" name="user[remember_me]" type="checkbox" value="1">
Run Code Online (Sandbox Code Playgroud)

由于Bootstrap为标签添加了此规则display: block,因此标签和复选框不在同一行中.要拥有相同的行,我需要像这样的HTML输出

<label for="user_remember_me">
    Ricordati di me
    <input name="user[remember_me]" type="hidden" value="0">
    <input id="user_remember_me" name="user[remember_me]" type="checkbox" value="1">
</label>
Run Code Online (Sandbox Code Playgroud)

表单标记文档中所示

您会注意到标签文本是意大利语,为Devised提供本地化的团队成员努力工作以了解如何执行此操作,并且我不想强迫他再次使用它来引入新的本地化字符串.

我知道这个FormBuidler label方法接受一个块作为参数的好事实,所以我能做到

<% f.label :remeber_me do %>
    <%= f.check_box :remember_me %>
<% end %>
Run Code Online (Sandbox Code Playgroud)

但是,这产生的HTML输出whitout的标签!具体来说,这就是我得到的:

<input name="user[remember_me]" type="hidden" value="0">
<input id="user_remember_me" name="user[remember_me]" type="checkbox" value="1">
Run Code Online (Sandbox Code Playgroud)

我试图在源代码看,该f.label方法调用的label方法,但我只可以看到,如果有一个块没有文本将被打印和标签和块将被呈现label_tagtemplate_object.

在深入挖掘源代码和无睡眠之夜之前,我决定等一下,向StackOverflow的生活社区寻求帮助.

我错过了什么吗?我f.label用错误的方式打电话给我?有些参数丢失了吗?

谢谢!!

小智 5

我不知道你是否有这个工作......

在Rails 3.2.6上运行这是我必须做的:

<%= f.label :remember_me do %>
  <%= f.check_box :remember_me %>
  Remember Me?
<% end %>
Run Code Online (Sandbox Code Playgroud)

我希望这可以帮助你,因为我来到这里寻找完全相同的问题的答案,除了通过反复试验找不到它.