我正在尝试使用隐藏输入技术读取复选框输入的值。
rails/ActionView/帮助/FormHelper/check_box
来自ActivityOverlord示例:
视图/user/edit.ejs
<% if (user.admin) { %>
<input type="hidden" name="admin" value="unchecked">
<label class="checkbox"><input type="checkbox" name="admin" checked> Admin</label>
<% } else { %>
<input type="hidden" name="admin" value="unchecked">
<label class="checkbox"><input type="checkbox" name="admin"> Admin</label>
<% } %>
api/模型/User.js
beforeValidate: function (values, next) {
// renamed in Sails v0.10.x
// beforeValidation: function (values, next) {
if (typeof values.admin !== 'undefined') {
if (values.admin === 'unchecked') {
values.admin = false;
} else if (values.admin[1] === 'on') {
values.admin = true;
}
}
next();
},
In Sails v0.9.x:
values.admin
是一个包含两个元素的数组。
In Sails v0.10.x:
values.admin
是false
。
应该航行v0.10。x传递数组到beforeValidate
?
不要这样做。html元素不应该有相同的名称!
就像这样使用:
<% if (user.admin) { %>
<label class="checkbox"><input type="checkbox" name="admin" checked value="yes"> Admin</label>
<% } else { %>
<label class="checkbox"><input type="checkbox" name="admin" value="yes"> Admin</label>
<% } %>
可以让你的数据保存之前:
var data = {
name: req.param("username"),
....
};
if(req.param("admin") == undefined){
data.admin = false;
}else{
data.admin = true;
}
你可以使用
User.create(data, function(err, success) { ...