1

JavaScript を使用して計算スクリプトを作成し、その結果を XLS ファイルにエクスポートしたいと考えています。

これは私のコードです:

****************THIS IS MY SCRIPT********
**********PROJECT/PUBLIC/JAVASCRIPT/calculator.js

  $(document).ready(function () {
     $(".conversion input").keyup(multInputs);

     function multInputs() {
         var mult = 0;
         // for each row:
         $("tr.conversion").each(function () {
             // get the values from this row:
             var $val1 = $('.val1', this).val();
             var $val2 = $('.val2', this).val();
             var $val3 = $('.val3', this).val();
             var $subtotal = ($val1 * 1) * ($val2 * 1)
             $('.soles',this).text($subtotal);
             mult = ($subtotal*1) +($val3 * 1);

         });

         $("#total").text(mult);
     }
});

そして、これは私の見解です:

  <div>
   <table border="1"  class="calculator">
    <tr>
        <th>COSTO DEL DOLAR</th>
        <th>SUMA DE SOLES</th>
        <th>SUMA DE SOLES A DOLARES</th>
        <th>SUMA DE DOLARES</th>
     </tr>
     <tr class="conversion">
        <td>  <input id="cambio"  name="cambio"  class="val1" maxlength ="5"/></td>
        <td>S/<input id="partial" name="partial" class="val2" readonly="readonly"  value="<%=  @soles %>"/></td>
        <td>$ <span class="soles" value="<%=  @multi.to_i %>"></span></td>
        <td>$ <input name="dolares" class="val3" readonly="readonly" value="<%= @dolares.to_i %>"/></td>
      </tr>
      <tr>
        <td colspan="4" align="center">MONTO TOTAL EN DOLARES: $ <span id="total"> 0.00  </span></td>
      </tr>
    </table> 
  </div>
  <%= link_to image_tag("/images/excel.png",:size => "18x18"),{
:controller=>"customer_reports",:action=>"excel",:format=>"xls" ,:search => params[:search]}  %>

これが私のコントローラーです:

def index
   @search = CustomerReport.search(params[:search])
   @customer_reports = @search.paginate( :page => params[:page], :per_page =>10)
   @results = CustomerReport.search(params[:search])

   @soles=CustomerReport.search(params[:search]).find(:all ,:conditions=>"mount_type = '0'").sum(&:mount)
   @dolares=CustomerReport.search(params[:search]).find(:all ,:conditions=>"mount_type = '1'").sum(&:mount) 

   respond_to do |format|
     format.html
     format.csv  { render :csv => "reporte_csv",:partial =>"csv" }
     format.xls  { render :xls => "reporte_xls",:partial =>"xls" }
   end
end

結果をエクスポートしたい。これを行う他の方法はありますか?

4

1 に答える 1

0

JavaScript でコードを記述した場合、そのコードはユーザーのブラウザーで実行され、その時点では Rails は制御できません。JavaScript の結果をテキストエリアに書き込み、ユーザーにそれをコピーして Excel スプレッドシートに貼り付けることができます。

または、結果をそのフォームの出力として Rails に送信し、Ruby コードで XLS ファイルを生成してから、それをブラウザーに送信して、ユーザーがダウンロードできるようにすることもできます。

私の意見では、計算に JavaScript を使用するのは邪魔になるだけです。そのページには、必要な情報を収集するフォームが必要です。上記の段落で説明したように、フォームから Rails に値を送信し、ページを生成します。

于 2013-09-11T00:39:52.623 に答える