【问题标题】:Rails: How to call a Javascript function from HTML in render :pdfRails:如何在渲染中从 HTML 调用 Javascript 函数:pdf
【发布时间】:2015-10-19 12:50:07
【问题描述】:

我需要显示一个金额的文本结果,为此我使用了一个 javascript 函数“toWords”。这个函数在我使用 onInput 或 onClick 时效果很好,但是我需要在文档打开时调用这个函数。所以这就是我尝试过的:

  <div class="label-field-pair3-text-area">
    <p id="demo"></p>

    </div>


<script type='text/javascript'>



document.getElementById("demo").innerHTML = window.toWords("<%= @amount.to_f %>"); 

..... </script>

但这不起作用。我也试过这个:

 j(document).ready( function(){ text_amount();});
 function text_amount(){
  var i= getElementbyId('payment_text');
  i.val(toWords("<%= @amount.to_f %>"));}

还有这个:

   <div class="label-field-pair3-text-area" id='payment_text' onload = "text_amount(150)">

但是这些都不起作用,什么也没有显示。

更新:当我从控制器中删除 render :pdf 时,它起作用了。所以问题在于在渲染我的 PDF 文件时运行这个函数 onLoad。

【问题讨论】:

  • 你不能在body标签上尝试onload回调吗?
  • text_amount 方法的渲染版本是什么?在 chrome(或您使用的任何浏览器)开发控制台中逐步执行此操作并检查它是否有意义。
  • @amount.to_f 可能什么都没有返回.. 试试看&lt;%= '1.0'.to_f %&gt; 而不是&lt;%= @amount.to_f %&gt;

标签: javascript html ruby-on-rails render


【解决方案1】:

看起来您在那里混合了 jquery 和常规 js:您使用 getElementById 定义 i,然后在其上调用 jquery 对象函数 val()val() 需要在 jquery 对象上调用,i 不是。试试这个:

 function text_amount(){
   var i = $('#payment_text');
   i.val(toWords("<%= @amount.to_f %>"));
 }

或者,更简单地说,

 function text_amount(){
   $('#payment_text').val(toWords("<%= @amount.to_f %>"));
 }

【讨论】:

    【解决方案2】:

    我也遇到了渲染问题:pdf,所以我改用这个:

        <%= link_to t('print'), "#", {:class  => 'grey-button-large themed_bg themed-dark-hover-background',  :href=>'javascript:printReceipt()'}%>
    

    然后在脚本中:

     function printReceipt()
    { 
      //$('#page-yield').printElement(); 
       var divName = "page-yield";
        var printContents = document.getElementById(divName).innerHTML;
        var originalContents = document.body.innerHTML;
    
        document.body.innerHTML = printContents;
    
        window.print();
    
        document.body.innerHTML = originalContents;
    }
    

    这是一个临时解决方案,它将您的文件作为页面打开,当用户单击打印时,它会被打印出来。

    不过,我建议你检查 PRAWN:

    http://www.sitepoint.com/pdf-generation-rails/

    How to render format in pdf in rails

    【讨论】:

    • 非常感谢,我暂时使用你的临时解决方案,我会尝试 PRAWN gem。
    【解决方案3】:

    检查toWords方法是否被加载

    console.log(window.toWords);
    

    使用前

    html页面是按顺序加载脚本的,如果使用后添加方法,则未定义。

    【讨论】:

      猜你喜欢
      • 2011-03-05
      • 1970-01-01
      • 2011-10-04
      • 1970-01-01
      • 1970-01-01
      • 2010-09-30
      • 1970-01-01
      • 2016-03-06
      • 2013-07-31
      相关资源
      最近更新 更多