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)
每个模型都将定义一个错误哈希定义,由模型的每个属性的错误组成.您可以@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)