从RubyonRails视图调用javascript函数

从RubyonRails视图调用javascript函数,javascript,ruby-on-rails,Javascript,Ruby On Rails,我一直在找,但找不到任何对我有帮助的东西 我有一个文件countdown.js app/assets/javascript/countdown.js // Total seconds to wait var seconds = 11; function countdown() { seconds = seconds - 1; if (seconds < 0) { // Chnage your redirection link here se

我一直在找,但找不到任何对我有帮助的东西

我有一个文件countdown.js app/assets/javascript/countdown.js

// Total seconds to wait
var seconds = 11;

function countdown() {
    seconds = seconds - 1;
    if (seconds < 0) {
        // Chnage your redirection link here
        seconds = 11;
        window.setTimeout("countdown()", 1000);
    } else {
        // Update remaining seconds
        document.getElementById("countdown").innerHTML = seconds;
        // Count down using javascript
        window.setTimeout("countdown()", 1000);
    }
}

// Run countdown function
countdown();

我想在index.html.erb文件上调用这个函数。我该怎么办?

你的js功能不好:

首先,你试着在内部调用倒计时 然后,对于倒计时,应该使用setInterval而不是setTimeout 所以你可以做更多类似的事情:

//assets/javascript/countdown.js

function countdown() {
  var seconds = 11
  setInterval(function() {
    if (seconds < 1) {
      seconds = 11
    }
    seconds -= 1
    document.getElementById("countdown").innerHTML = seconds + " seconds"
  }, 1000);
}

window.onload = function() {
  countdown();
};
并且您的application.js在布局中链接:

#layouts/application.html.erb
<%= javascript_include_tag 'application', 'data-turbolinks-track': 'reload' %>

现在,您可以在index.html.erb的div中显示倒计时,id=countdown

您是否将js文件链接到应用程序?加载项如果不起作用,请确保指定正确的路径。我可以问一个新问题吗?我想在我的div上获得这一秒并保存在我的控制器中。我怎么能做到?我真的不明白你说的秒是什么意思。如果要将视图数据传递给控制器,则需要使用参数或更复杂的js和ajax。我的意思是当我点击一个按钮得到我的倒计时的实际值时,它已经显示在我的DIV上,并保存这个值。
#layouts/application.html.erb
<%= javascript_include_tag 'application', 'data-turbolinks-track': 'reload' %>