在 rails 上的 ruby 中使用模板文字

Using template literals in ruby on rails

我在 rails 应用程序上有一个 ruby,它有一个使用 javascript 注入新表单字段的表单。注入的表单字段位于模板文字中。模板在这里:

    $("#formSet").append(`
            <div class="row itemGroup">
        <div class="form-group col">
        <div class="input-group">
        <input type="number" min="0" value="1" name="quotation[items_attributes][${count}][qty]" id="item-qty-${count}" class="form-control qty">
        </div>
        </div>
        <div class="form-group col-5">
        <div class="input-group">
        <input type="text" name="quotation[items_attributes][${count}][description]" id="item-description-${count}" class="form-control desc">
        </div>
        </div>
        <div class="form-group col">
        <div class="input-group">
        <input type="number" value="0" name="quotation[items_attributes][${count}][price]" step="any" min="0" id="item-price-${count}" class="form-control price">
        </div>
        </div>
        <div class="form-group col">
        <div class="input-group">
        <input type="checkbox" name="quotation[items_attributes][${count}][tax]" value="1" id="item-tax-${count}" class="form-control tax"  checked="checked">
        </div>
        </div>
        <div class="form-group col">
        <div class="input-group">
        <input type="number" value="0.00" class="form-control subtotal" name="[items_attributes][${count}][subtotal]" readonly>
        </div>
        </div>
        </div>
`);

然而,当我尝试为生产预编译我的资产时,我得到:

ExecJS::RuntimeError: SyntaxError: Unexpected character '`'

有没有办法在 rails 预编译器中使用 ES6 模板文字,或者有没有办法在不使用模板文字的情况下附加项目?

目前 Rails 默认配置不足以使用 ES6。您可以通过多种方式设置您的项目以使用 ES6,但不幸的是,实际上并没有 'standard' 的方式来执行此操作。

选项 1: 如果您的 rails 版本是 4.2 和 Sprockets 3,那么您可以使用 https://github.com/rmacklin/sprockets-bumble_d 添加 ES6 支持。

选项 2: 将 Sprockets 升级到版本 4,然后使用 https://github.com/fnando/babel-schmooze-sprockets or https://github.com/babel/ruby-babel-transpiler 添加 babel 以支持 ES6。

选项 3: 如果您使用的是 Rails 5.1,则使用 webpack(代替 sprockets 或与 sprockets 并用)。 Rails 5.1 通过 webpacker gem. This may be the more difficult option for an existing application. There is a good article about it here: https://medium.com/statuscode/introducing-webpacker-7136d66cddfb#.cb4sixyah 介绍原生 webpack(以及 babel)支持,希望对您有所帮助。