在Model.beforeValidate中获取数组值



我正在尝试使用隐藏输入技术读取复选框输入的值。

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.adminfalse

应该航行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) { ...

相关内容

  • 没有找到相关文章

最新更新