【发布时间】:2014-03-25 05:37:20
【问题描述】:
我有一个模型请求的数据库表,其中有一列是项目。项目是一个数组。当用户提交表单时,我需要一个验证,以确保数组不为空(即,至少检查一项),然后才允许他们点击提交。
如果 item 是属于 Request 的模型,但如果 item 只是 Request 中的一个列,我已经找到了如何执行此操作。以下是我的最佳尝试,但它不起作用,因为我收到错误“您需要提供至少一个验证”
型号代码
class Request < ActiveRecord::Base
serialize :item
validates :must_have_one_item
def must_have_one_item
for item in @request.items
errors.add(:base, 'You must select at least one item') if request.item.blank?
end
end
查看表单代码
<%= f.check_box(:item, {:multiple => true}, "#{item}") %>
控制器代码
def create
@requestrecord = Request.new(request_params)
end
private
def request_params
params.require(:request).permit({:item => []})
end
【问题讨论】:
-
顺便说一句,你有
item作为复选框和:item在许可中,但是在模型代码中访问items....我建议将它们都称为items以减少混乱。您正在谈论一组项目...所以将它们命名为items -
啊,所以我解决了这个问题,但反过来,我决定调用所有项目,因为那是数据库中的表。但正如我在下面的另一条评论中所写,self.item.blank?不会通过错误,但实际上也不会进行检查
-
是的 - 它会在单个项目和多个项目之间混淆。最好以实际合理的方式修复它;)
标签: ruby-on-rails forms validation checkbox