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

时间:2016-05-01 23:01:22

标签: ruby-on-rails ruby refactoring

我有一个包含name文本字段的表单,它有一个在线状态验证。当用户忘记输入名称时,文本字段变为红色,这一切都很好,但我想清理一下我的视图,但我不确定如何?也许是帮手?也许是一种方法?我对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声明,但我觉得它有点太难看了。

1 个答案:

答案 0 :(得分:0)

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

示例:发布模型 - app / models / post.rb

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

如果用户现在尝试提交标题或正文为空的表单,则会要求他们重新提交表单,并提供一个小工具提示&#34;请填写此字段&#34;。

视图中不需要逻辑来实现此目的,只需验证模型中的状态。