【问题标题】:Constructing multi-value JSON for Rails为 Rails 构建多值 JSON
【发布时间】:2011-07-09 16:29:36
【问题描述】:

我有以下包含多值电子邮件属性的 javascript 对象:

var contact = {
    email =     {
        home =         (
            "me@home.com"
        );
        work =         (
            "me@work.com"
        );
    };
    emailCount = 2;
    firstName = Micah;
    lastName = Alcorn;
}

我需要构建以下 JSON 以发送到 Rails 服务器:

processedContact.params = {
    'contact[first_name]':'Micah',
    'contact[last_name]':'Alcorn',
    'contact[emails_attributes][0][label]':'home',
    'contact[emails_attributes][0][account]':'me@home.com',
    'contact[emails_attributes][1][label]':'work',
    'contact[emails_attributes][1][account]':'me@work.com',
};

我不知道如何克服以下问题:

function processContact(contact) {
    processedContact = {};
    processedContact.params = {
        'contact[first_name]':contact.firstName,
        'contact[last_name]':contact.lastName,
        // ????????
    };
    for (each in contact.email) {
        // this can be used to produce the email.account values, but not the email.labels
    }
}

如果我静态输入,我的 Rails 应用程序会正确处理它。但是让我知道是否有更好的方法是在服务器端处理它,这样我就不必手动构造 JSON。谢谢!

【问题讨论】:

    标签: json ruby-on-rails-3 nested-attributes javascript-objects multivalue


    【解决方案1】:

    当我遍历 contact.email 时,我得到了标签。获取账号很简单,就是回到原来的联系人Hash,因此:

    function processContact(contact) {
        processedContact = {};
        processedContact.params = {
            'contact[first_name]':contact.firstName,
            'contact[last_name]':contact.lastName,
        };
        var index = 0;
        for (label in contact.email) {
            processedContact.params['contact[emails_attributes]['+index+'][label]'] = label;
            processedContact.params['contact[emails_attributes]['+index+'][account]'] = contact[label];
            index++;
        }
        return processedContact;
    }
    

    【讨论】:

    • 在我的特定用例中,我必须将最后一个参数更改为processedContact.params['contact[emails_attributes]['+index+'][account]'] = contact.email[label].toString();。非常感谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-07-21
    • 1970-01-01
    • 2019-06-08
    • 2013-07-20
    • 1970-01-01
    • 2014-08-09
    • 2015-09-05
    相关资源
    最近更新 更多