我的问题如下:
我有一个表单视图,需要在提交后显示成功和失败图标。在提交之前只需要显示没有成功和失败图标的表单。
当这是以下形式时,我们可以通过多种方式做到这一点:
<%= form_for @resource do |f| %>
<div class='<%= set_class @resource, :name %>'>
Name: <%= f.text_field :name %>
</div>
<% end %>
检查请求是否为 POST:
def set_class( record, attribute )
if request.post?
if record.errors[attribute].any?
return "FAILED"
else
return "SUCCESS"
end
end
# If not submitted, we don't want a class
end
验证后设置一个标志(我们可以request.post?
在上面的解决方案中替换为record.tried_to_validate
):
class MyModel < ActiveRecord::Base
after_validation :set_tried_to_validate
attr_accessor :validated
def set_validated
@tried_to_validate = true
end
end
但我真的不喜欢这些解决方案..
没有内部 Rails 方法来检查验证过程是否完成?