Rails 4 应用程序。
form_tag
用于构建表单并想知道当表单不支持我的模型时处理和显示错误的典型方式(如果有的话)?
我发现的所有示例都与模型和典型@model.errors.any?
视图条件有关,但这不适用于form_tag
.
Rails 4 应用程序。
form_tag
用于构建表单并想知道当表单不支持我的模型时处理和显示错误的典型方式(如果有的话)?
我发现的所有示例都与模型和典型@model.errors.any?
视图条件有关,但这不适用于form_tag
.
你应该做的是:
首先包括 ActiveModel::Model
然后为您的属性制作访问器
最后为这些属性添加验证
例如,如果您有一个不想将其与数据库绑定的联系人模型
class Contact
include ActiveModel::Model
attr_accessor :name, :email, :message
validates :name, presence: true
validates :email, presence: true
validates :message, presence: true, length: { maximum: 300 }
end
然后在您看来,您可以像使用习惯性的 activeRecord 模型一样遍历错误
if @model.errors.any?
# Loop and show errors....
end
我建议在一个不表现模型但我们需要验证的类中包含 ActiveModel::Validations。例如,考虑一个 Ticket 类
导轨 4
class Ticket
include ActiveModel::Model
attr_accessor :title, :description
validate_presence_of :title
validate_presence_of :description
end
此外,如果您查看 Rails 4 activemodel/lib/active_model/model.rb 代码以更好地理解为什么在 rails 4 中“包含 ActiveModel::Model”仅足以使类表现得像模型,那么有关更多详细信息。
def self.included(base)
base.class_eval do
extend ActiveModel::Naming
extend ActiveModel::Translation
include ActiveModel::Validations
include ActiveModel::Conversion
end
end
导轨 3
class Ticket
include ActiveModel::Conversion
include ActiveModel::Validations
extend ActiveModel::Naming
attr_accessor :title, :description
validate_presence_of :title
validate_presence_of :description
end
您的 Ticket 类的行为类似于模型,使您可以使用这些方法进行错误验证
Ticket.new(ticket_params)
@ticket.valid?
@ticket.errors
@ticket.to_param
我希望它可以帮助你解决你的问题。