如何使用 twitter bootstrap by rails framework 显示漂亮的错误消息?

Posted

技术标签:

【中文标题】如何使用 twitter bootstrap by rails framework 显示漂亮的错误消息?【英文标题】:How to show beautiful error messages with twitter bootstrap by rails framework? 【发布时间】:2015-01-19 02:50:20 【问题描述】:

如果我使用 Rails 4 进行测试:

rails g scaffold post title description:text

这里会生成表单源:

<%= form_for(@post) do |f| %>
  <% if @post.errors.any? %>
    <div id="error_explanation">
      <h2><%= pluralize(@post.errors.count, "error") %> prohibited this post from being saved:</h2>

      <ul>
      <% @post.errors.full_messages.each do |message| %>
        <li><%= message %></li>
      <% end %>
      </ul>
    </div>
  <% end %>

  <div class="field">
    <%= f.label :title %><br>
    <%= f.text_field :title %>
  </div>
  <div class="field">
    <%= f.label :description %><br>
    <%= f.text_area :description %>
  </div>
  <div class="actions">
    <%= f.submit %>
  </div>
<% end %>

还有scaffold.css.scsss:

body 
  background-color: #fff;
  color: #333;
  font-family: verdana, arial, helvetica, sans-serif;
  font-size: 13px;
  line-height: 18px;


p, ol, ul, td 
  font-family: verdana, arial, helvetica, sans-serif;
  font-size: 13px;
  line-height: 18px;


pre 
  background-color: #eee;
  padding: 10px;
  font-size: 11px;


a 
  color: #000;
  &:visited 
    color: #666;
  
  &:hover 
    color: #fff;
    background-color: #000;
  


div 
  &.field, &.actions 
    margin-bottom: 10px;
  


#notice 
  color: green;


.field_with_errors 
  padding: 2px;
  background-color: red;
  display: table;


#error_explanation 
  width: 450px;
  border: 2px solid red;
  padding: 7px;
  padding-bottom: 0;
  margin-bottom: 20px;
  background-color: #f0f0f0;
  h2 
    text-align: left;
    font-weight: bold;
    padding: 5px 5px 5px 15px;
    font-size: 12px;
    margin: -7px;
    margin-bottom: 0px;
    background-color: #c00;
    color: #fff;
  
  ul li 
    font-size: 12px;
    list-style: square;
  

结果是:

但是如果我想使用twitter bootstrap的表单错误类,比如:

如何以正确的方式做到这一点?有不错的宝石出口吗?

确实,我想要这种风格:

【问题讨论】:

是的,您可以使用twitter-bootstrap-rails 为您的表单应用自定义引导程序检查此链接:github.com/seyhunak/twitter-bootstrap-rails @Choco 非常感谢。我知道那颗宝石。我不知道如何检查错误并使用错误样式的html源。 请参考这些链接github.com/bootstrap-ruby/rails-bootstrap-forms和***.com/questions/15155890/…他们可能会帮助你 @Choco 很好!我想这就是我想要的。非常感谢!如果你能写一个答案,我会接受它:) 我发布了我的答案谢谢 【参考方案1】:

您可以使用rails-bootstrap-forms gem,我们可以通过将自定义引导样式应用于我们的表单来自定义 Rails 表单。

宝石文件:

gem 'bootstrap_form'

application.css.scss:

 *= require rails_bootstrap_forms

表格

<%= bootstrap_form_for(@post) do |f| %>
  <% if @post.errors.any? %>
    <div id="error_explanation">
      <h2><%= pluralize(@post.errors.count, "error") %> prohibited this post from being saved:</h2>

      <ul>
      <% @post.errors.full_messages.each do |message| %>
        <li><%= message %></li>
      <% end %>
      </ul>
    </div>
  <% end %>

  <div class="field">
    <%= f.label :title %><br>
    <%= f.text_field :title %>
  </div>
  <div class="field">
    <%= f.label :description %><br>
    <%= f.text_area :description %>
  </div>
  <div class="actions">
    <%= f.submit %>
  </div>
<% end %>

请参考这些链接以获得更多帮助:

https://github.com/bootstrap-ruby/rails-bootstrap-forms

Styling form error message - bootstrap/rails

希望对你有帮助。


表格应该是:

<%= bootstrap_form_for(@question) do |f| %>
  <%= f.alert_message "Please input values." %>
  <%= f.text_field :title %>
  <%= f.text_field :description %>
  <%= f.submit %>
<% end %>

【讨论】:

这个 rails-bootstrap-forms 能否与 twitter-bootstrap-rails 配合得很好?我已经有 twitter-bootstrap-rails,我可以将 rails-bootstrap-forms 放到同一个应用程序中进行表单样式设置吗? @anand 我认为它会起作用,因为这两种宝石是不同的并且具有不同的风格 一个绝妙的答案!非常有帮助。 @Anand 我现在正在使用这两个 gem,直到现在都没有问题。

以上是关于如何使用 twitter bootstrap by rails framework 显示漂亮的错误消息?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Twitter Bootstrap 自动关闭警报

你怎么知道如何使用 twitter-bootstrap?

如何使用 Twitter Bootstrap 弹出框进行 jQuery 验证通知?

如何在 twitter-bootstrap-3 模态框中使用复选框

如何使用 Twitter Bootstrap 3 设置颜色主题?

如何使用 twitter bootstrap 使文本和画布响应?