在 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)支持,希望对您有所帮助。
我在 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)支持,希望对您有所帮助。