加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – Rails,使用FormBuilder和Devise标记嵌套HTML,

发布时间:2020-12-17 02:35:31 所属栏目:百科 来源:网络整理
导读:我正在研究Rails 3.1应用程序的前端部分.我们使用Twitter Bootstrap作为CSS框架,Devise作为身份验证管理器,使用I18n gem进行本地化. 这是带有标签的复选框的设计语法 %= f.label :remember_me %%= f.check_box :remember_me % 这当然是生成的HTML label for=
我正在研究Rails 3.1应用程序的前端部分.我们使用Twitter Bootstrap作为CSS框架,Devise作为身份验证管理器,使用I18n gem进行本地化.

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

<%= f.label :remember_me %>
<%= f.check_box :remember_me %>

这当然是生成的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">

由于Bootstrap为标签显示添加了此规则:块,标签和复选框不在同一行.要拥有相同的行,我需要像这样的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>

如forms markup documentation所示

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

我知道FormBuidler标签方法接受块作为参数的好事实,所以我可以这样做

<% f.label :remeber_me do %>
    <%= f.check_box :remember_me %>
<% end %>

但这会在标签上产生HTML输出! o.O
具体来说,这就是我得到的:

<input name="user[remember_me]" type="hidden" value="0">
<input id="user_remember_me" name="user[remember_me]" type="checkbox" value="1">

我试着查看源代码,f.label method调用label method,但我只能看到,如果有一个块,将不会打印文本,并且标签和块将由template_object的label_tag呈现.

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

我错过了什么吗?我用错误的方式用块调用f.label?有些参数丢失了吗?

谢谢!!

解决方法

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

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

<%= f.label :remember_me do %>
  <%= f.check_box :remember_me %>
  Remember Me?
<% end %>

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读