如何从html.erb调用JavaScript函数

时间:2014-04-08 12:52:48

标签: ruby-on-rails ruby

如何从html.erb

调用JavaScript函数 application.js

中的

function displayClock() {
  var digital = new Date();
  var hours = digital.getHours();
  var minutes = digital.getMinutes();
  var seconds = digital.getSeconds();
  var amOrPm = 'AM';
  if (hours > 11) amOrPm = 'PM';
  if (hours > 12) hours = hours - 12;
  if (hours == 0) hours = 12;
  if (minutes <= 9) minutes = '0' + minutes;
  if (seconds <= 9) seconds = '0' + seconds;
  dispTime = '<b>'+hours + ':' + minutes + ':' + seconds + ' ' + amOrPm+'</b>';
  document.getElementById('time').innerHTML = dispTime;
  setTimeout('displayClock()', 1000);
}

并在 home.html.erb

displayClock();

但它没有调用函数!

1 个答案:

答案 0 :(得分:19)

您可能需要使用正确的标记来表明您正在编写JS代码:

<script type="text/javascript">
  displayClock();
</script>

另外,既然您可能使用jQuery(它在Rails中的默认设置),您可能需要确保在加载整个文档后调用该函数:

<script type="text/javascript">
  $(document).load(function(){
    displayClock();
  });
</script>

我还建议您不要在application.js中编写JS,并仅将此文件用作清单文件,其中包含通过Rails asset pipeline的其他脚本。

您还可以利用html.erb文件中的javascript助手javascript_tag

<%= javascript_tag "displayClock()" %>