Ruby on Rails中表单提交旁边出现的简单表单错误消息

kdw*_*r89 2 css forms haml ruby-on-rails simple-form

我正在处理表单,我在提交表单时遇到问题.如果用户弄乱或跳过其中一个条目,则会在页面顶部呈现所有错误消息.我想知道我是否可以让他们在每个提交旁边呈现?

我的控制器看起来像

def new
 @form_submission ||= FormSubmission.new
end

def create
 @form_submission = FormSubmission.new(form_submission_params)

 if @form_submission.save
   redirect_to thank_you_path
 else
   render :new
 end
end
Run Code Online (Sandbox Code Playgroud)

我的观点看起来像

 .field
  = f.label :first_name, required: false, class: "font required-field"
 = f.text_field :first_name, :required => "", class: "stretch test"
Run Code Online (Sandbox Code Playgroud)

和我的CSS

.font{
 vertical-align: text-bottom;
 font-size: 15px;
 font-weight: bold;
 font-family: "Helvetica Neue";
 height: 15px;
}

.required-field::before{
content: ' *';
float: right;
color: red;
padding-left: 5px;
}

.test:valid{
  border: 1px solid #00aeef;
}

.test:invalid{
  border: 1px solid red;
}
Run Code Online (Sandbox Code Playgroud)

Jus*_*tin 6

每个模型都将定义一个错误哈希定义,由模型的每个属性的错误组成.您可以@form_submission.errors.full_messages_for(:first_name)在视图中执行某些操作,仅针对一个属性访问错误,在此示例first_name中为@form_submission模型属性的错误.

我通常会为表单错误创建一个部分错误,看起来像这样

<% unless errors.nil? %> 
  <div class="error-explanation">
    <ul class="list-unstyled">
      <% errors.each do |error| %>
        <li><%= error %></li>
      <% end %>
    </ul>
  </div>
<% end %>
Run Code Online (Sandbox Code Playgroud)

然后为表单中的每个字段访问它

<%= render partial: 'shared/form_error', locals: {errors: @form_submission.errors.full_messages_for(:body)} %>
Run Code Online (Sandbox Code Playgroud)