Javascript .on(“ change”,...无法在生产环境中使用,但可以在本地主机上使用

时间:2019-03-27 03:45:36

标签: javascript ruby-on-rails ruby heroku

问题:我的JavaScript似乎无法在heroku上运行,但在本地运行。虽然,我在该应用程序上还有其他的 javascript

我主要将Bootstrap 4用于CSS。我的大多数JS都是手动完成的,而不是借助Bootstrap。

这是一种需要动态提交信息的表单:

    <form action="/bank_accounts" method="POST" id="payment-form-1">
                                        <input type="hidden" name="token" />
                                        <div class="form-row" "form-control">
                                          <label for="country">Country</label>
                                          <select id="country" class="form-control form-group">
                                            <option value="">-- select one -- </option>
                                            <option value="US">United States</option>
                                            <option value="AU">Australia</option>
                                            <option value="AT">Austria</option>
                                            <option value="BE">Belgium</option>
                                            <option value="CH">Switzerland</option>
                                            <option value="DK">Denmark</option>
                                            <option value="FI">Finland</option>
                                            <option value="LU">Luxembourg</option>
                                            <option value="NL">Netherland</option>
                                            <option value="NO">Norway</option>
                                            <option value="SE">Sweden</option>
                                            <option value="CA">Canada</option>
                                            <option value="FR">France</option>
                                            <option value="DE">Germany</option>
                                            <option value="NZ">New Zealand</option>
                                            <option value="GB">United Kingdom</option>
                                            <option value="ES">Spain</option>
                                          </select>
                                        </div>
                                        <div class="form-row">
                                          <label for="currency">Currency</label>
                                          <select id="currency" class="form-control form-group">
                                            <option value="">-- select one -- </option>
                                          </select>
                                        </div>

<script>

$(document).ready(function() {

    $("#country").change(function() {
        var val = $(this).val();
        if (val == "US") {
            $("#currency").html("<option value='USD'>US Dollar</option>");
        } else if (val == "AU") {
            $("#currency").html("<option value='AUD'>AU Dollar</option>");
        } else if (val == "GB") {
            $("#currency").html("<option value='EUR'>Euro</option><option value='GBP'>Pound</option>");
        } else if (val == "CA") {
            $("#currency").html("<option value='CAD'>Canadian Dollar</option><option value='USD'>US Dollar</option>");
        } else if (val == "DK") {
            $("#currency").html("<option value='EUR'>Euro</option><option value='DKK'>Danish Krone</option>");
        } else if (val == "NO") {
            $("#currency").html("<option value='EUR'>Euro</option><option value='NOK'>Norwegian Krona</option>");
        } else if (val == "SE") {
            $("#currency").html("<option value='EUR'>Euro</option><option value='SEK'>Swedish Krona</option>");
        } else if (val == "CH") {
            $("#currency").html("<option value='EUR'>Euro</option><option value='CHF'>Swiss Franc</option>");
        } else if (val == "NZ") {
            $("#currency").html("<option value='NZD'>NZ Dollar</option>");
        } else if (val == "AT" || "BE" || "FR" || "FI" || "GE" || "IE" || "NL" || "PT" || "ES" || "LU") {
            $("#currency").html("<option value='EUR'>Euro</option>");
        }
    });
});

</script>

2 个答案:

答案 0 :(得分:0)

您如何确定用户所在的位置? 如果是通过用户在仪表板中设置的值,那么我不确定。

但是,如果脚本根据用户位置请求信息, 可能是权限错误,具体取决于Heroku是否允许。

如果该函数在本地运行,则代码可以正常工作,那里没什么问题。 对我来说,这听起来像是某种许可错误。

如果您能够发布有关该问题的更多信息。 如果可能的话,控制台(错误)输出也会很有用。

答案 1 :(得分:0)

这可能是turbolinks问题。你可以尝试

1)从Gemfile中删除gem'turbolinks'行。

2)从您的app / assets / javascripts / application.js中删除// = require涡轮链接。

3)从您的app / views / layouts / application.html.erb中删除两个“ data-turbolinks-track” =>真正的哈希键/值对。