Ruby on rails rails检查表单是否填写完整

Ruby on rails rails检查表单是否填写完整,ruby-on-rails,Ruby On Rails,我在rails视图中有一些信息,只有当用户在数据库中输入了所有个人详细信息(如姓名、姓氏、街道和城市)时,我才想显示这些信息。我现在可以这样做: if user.name && user.firstname && user.street && user.street # show stuff end 但我不认为这是非常优雅和“铁路方式”。有更简单、更智能的方法吗?您可以在html表单标记和模型类中的验证中使用required。请点击以下链接:

我在rails视图中有一些信息,只有当用户在数据库中输入了所有个人详细信息(如姓名、姓氏、街道和城市)时,我才想显示这些信息。我现在可以这样做:

if user.name && user.firstname && user.street && user.street
# show stuff
end

但我不认为这是非常优雅和“铁路方式”。有更简单、更智能的方法吗?

您可以在html表单标记和模型类中的验证中使用
required
。请点击以下链接:

在您的模型中

class User < ActiveRecord::Base
  def has_required_fields?
    self.name && self.first_name && self.address && ....
  end
end
“rails方式”将是瘦控制器、胖模型。因此,在您的情况下,您希望在
用户
模型中创建一个方法,然后在控制器中使用它

用户模型

def incomplete?
  name.blank? or firstname.blank? or street.blank?
end
unless user.incomplete?
  # Show stuff
end
用户控制器

def incomplete?
  name.blank? or firstname.blank? or street.blank?
end
unless user.incomplete?
  # Show stuff
end
在模型中:

ALL_REQUIRED_FIELDS = %w(name surname address email)

def filled_required_fields?
  ALL_REQUIRED_FIELDS.all? { |field| self.attribute_present? field }
end
在控制器中:

@user.filled_required_fields?
如果所有字段都已填充,则返回true;否则返回false


看起来很优雅:)

不,这不是我想做的。我想独立于表单过滤信息。