将错误条件移出视图。 -Rails

Moving error conditionals out of the view. -Rails

我有一个表单,其中有一个名称文本字段,上面有一个存在验证。当用户忘记输入名称时,文本字段会变成红色,这一切都很好,但我想稍微清理一下我的视图,但我不确定该怎么做?也许是帮手?也许是一种方法?我对 rails 有点陌生,我正在寻找有关此问题的一些建议。这是我的视图代码。

查看

    <% if f.object.errors[:name].present? %>
     <%= f.text_field :name, :class => 'alert' %>
     <div class="validation">
      <% f.object.errors[:name].each do |error| %>
        <%= error %>
       <% end %>
     </div>
      <% else %>
       <%= f.text_field :name %>
      <% end %>

这是一个非常标准的 if else 语句,但我认为它对于视图来说有点太丑了。

您可以使用模型验证获得类似的结果。如果您需要对模型进行存在验证,那么它会告诉用户该字段不能为空。这将允许您告诉用户如果不在您的视图中手动编码,他们不能将表单字段留空。

示例:Post 型号 - app/models/post.rb

class Post < ActiveRecord::Base 
  validates :title, :presence => true
  validates :body, :presence => true
end

如果用户现在尝试提交标题为空或 Body 为空的表单,那么他们将被要求重新提交表单,并显示一个小工具提示 "Please fill out this field"。

视图中无需逻辑即可实现此目的,只需验证模型中的存在即可。