我正在尝试运行一个目标应用程序主页的表单,该表单同时使用无表和数据库存储的变量。我需要在表单上运行验证。我需要运行验证,特别是一个比较两个无表值的验证。
我最终的目标是通过以下gem获取运行客户端的验证: https://github.com/bcardarella/client_side_validations 但最初,我希望在表单提交时使用验证。
出现的第一个问题是哪个模型应该保存邮件验证逻辑。 homePage必须做很多事情,不是模型,最重要的是,搜索结果会导致不同的控制器。
随后,虽然有些验证是一次性的,并且实际上不需要考虑因素,但我会将验证逻辑放在app / validators / different_objects_validator.rb
中class DifferentObjectsValidator < ActiveModel::Validator
def different_objects
errors.add(:different_objects, "cannot be less than quantity") unless
self.quantity >= self.different_objects
end
end
表格数据是:
<%= form_tag result_quote_request_path, :method => :get do %>
Base <%= number_field :quote, :base, :size => 5 %>
Height <%= number_field :quote, :height, :size => 5 %>
Quantity <%= number_field :quote, :quantity, :size => 5, :value => 1 %>
Different source objects <%= number_field :quote, :different_objects, :size => 5, :value => 1 %>
<%= submit_tag "find", :name => nil %>
<% end -%>
然后
class Quote < ActiveRecord::Base
include ActiveModel::Validations
validates :different_objects, different_objects_valid => true
重新启动瘦Web服务器后,会导致:
ActionView :: Template :: Error(未定义的方法`name'代表nil:NilClass):
但这有点像红色鲱鱼:没有验证,表单会生成搜索结果
我意识到这里可能有很多不妥之处。我无法正确关注调用验证的位置以及无表状态。
答案 0 :(得分:0)
您的错误来自以下内容:
<%= submit_tag "find", :name => nil %>
简单地做
<%= submit_tag "find" %>