【问题标题】:Do Devise forms require a label for each textfield?设计表单是否需要每个文本字段的标签?
【发布时间】:2015-12-24 17:07:34
【问题描述】:

Devise 是否需要为其表单中的每个文本字段添加一个标签(即:注册/新)?

当我删除代码中的标签时,即:“”,文本字段也会在页面上消失。我想显示文本字段,而不是标签。

设计/注册/new.html.erb

<div class="row">
  <div class="col-md-8">
    <%= form_for(resource, as: resource_name, url: registration_path(resource_name)) do |f| %>
      <%= devise_error_messages! %>
      <div class="form-group>
        <%= f.label :name %>
        <%= f.text_field :name, autofocus: true, class: 'form-control', placeholder: 'Name' %>
      </div>
      <div class="form-group>
        <%= f.label :email %>
        <%= f.text_field :email, class: 'form-control', placeholder: 'Email' %>
      </div>
      <div class="form-group>
        <%= f.label :password %>
        <%= f.text_field :password, class: 'form-control', placeholder: 'Password' %>
      </div>  
      <div class="form-group>
        <%= f.label :password_confirmation %>
        <%= f.text_field :password_confirmation, class: 'form-control', placeholder: 'Confirm password' %>
      </div>   
      <div class="form-group">
        <%= f.submit "Sign up", class: 'btn btn-success' %>
      </div>
      <div class="form-group">
        <%= render "devise/shared/links" %>
      </div>  
    <% end %>
  </div>
</div>

删除标签后

删除标签之前

我已经阅读了将标签排除在表单中的文本字段之外的不良做法,但 Facebook 会这样做;)

我还是 RoR 的新手,感谢任何指导。

【问题讨论】:

  • 删除标签后你的表单是什么样子的?你也可以发一下吗?

标签: html ruby-on-rails forms devise


【解决方案1】:

Devise 是否需要为每个文本字段添加标签

没有。

Devise is a gem.

它使用与其他所有 Ruby/Rails 应用程序相同的帮助程序和代码构建。对标签的使用没有特殊要求。

事实上,Rails 的 form 助手以及其他所有助手都输出原始 HTML。如果您可以避免在 html 中没有标签,您可以使用表单助手来做到这一点。


这是我们的devise 注册表代码(HAML):

#app/views/devise/registrations/new.haml
.authenticate
  = render "devise/shared/title"
  = simple_form_for(User.new, as: resource_name, url: registration_path(resource_name)) do |f|
    - if flash[:error]
      .form-errors= flash[:error]
    = f.error_notification
    .form-inputs
      = f.input :email, required: true, autofocus: true, placeholder: "Email"
      %hr
      = f.input :password, required: true, placeholder: "Password"
      = f.input :password_confirmation, required: true, placeholder: "Confirm"
    .form-actions
      .bar
        = link_to "", "#", rel: "submit", class: "ion-forward", title: "Register", data: { placement: "right" }

= render "devise/shared/links"

您应该尝试以下方法:

<%= form_for(resource, as: resource_name, url: registration_path(resource_name)) do |f| %>
  <%= devise_error_messages! %>
    <%= f.text_field :name, autofocus: true, class: 'form-control', placeholder: 'Name' %>
    <%= f.text_field :email, class: 'form-control', placeholder: 'Email' %>
    <%= f.text_field :password, class: 'form-control', placeholder: 'Password' %>
    <%= f.text_field :password_confirmation, class: 'form-control', placeholder: 'Confirm password' %>
    <%= f.submit "Sign up", class: 'btn btn-success' %>
    <%= render "devise/shared/links" %>
<% end %>

删除所有HTML 元素以确保它们不会阻止Rails 正确显示元素。如果可行,您将能够重新构建 HTML 和 CSS 以查看问题所在。

【讨论】:

    猜你喜欢
    • 2019-11-27
    • 1970-01-01
    • 2016-12-08
    • 1970-01-01
    • 1970-01-01
    • 2015-11-10
    • 1970-01-01
    • 2021-05-31
    • 1970-01-01
    相关资源
    最近更新 更多