1

コントローラのメソッドで処理するJavaScript配列を送信したいと思います。私はこのように間違っていると思います。私はRoR、jquery、およびajaxnoobieの合計です。これが私が持っているものです。ガイドラインを教えてください。

<div id="dataTable" class="dataTable" style="width: 680px;height: 300px; overflow: scroll"></div>
<button>Save!</button>
<script>
    var first = true;
    var totalChanges = new Array();
    $("#dataTable").handsontable({
         //...some code that generates appropriate array totalChanges
    });
    var data = //..some code
    $("#dataTable").handsontable("loadData", data);
    $(function() {
            $( "button").button();
            $( "button" ).click(function() { 
                    alert("clicked"); 
                    $.ajax({
                            type: "POST",
                            url: "save",
                            data: JSON.stringify(totalChanges),
                            success: function() { alert("Success!"); }
                    });
            });
    });

</script>

このエラーが発生します:

POST http://10.10.136.244:6500/qtl_table/save 500 (Internal Server Error) 

Started POST "/qtl_table/save" for 10.64.229.59 at Mon Jun 25 16:58:46 -0500 2012
  Processing by QtlTableController#save as 
  Parameters: {"125,0,\"\",\"Ph upt 1-2\""=>{","=>{"125,1,\"\",\"DOR364\""=>{","=>{"125,2,\"\",\"G19833\""=>nil}}}}}
LOGGER WORKS
Completed 500 Internal Server Error in 81ms

ActionView::MissingTemplate (Missing template qtl_table/save with {:formats=>[:html], :handlers=>[:rjs, :rhtml, :erb, :rxml, :builder], :locale=>[:en, :en]} in view paths "/usr/home/benjamin/phavubase/qtl/app/views", "/usr/home/benjamin/phavubase/qtl/ruby/1.8/gems/declarative_authorization-0.5.5/app/views", "/usr/home/benjamin/phavubase/qtl/ruby/1.8/gems/devise_cas_authenticatable-1.1.1/app/views", "/usr/home/benjamin/phavubase/qtl/ruby/1.8/gems/devise-1.2.1/app/views", "/usr/home/benjamin/phavubase/qtl/ruby/1.8/gems/kaminari-0.12.4/app/views"):
  app/controllers/qtl_table_controller.rb:18:in `data'
  app/controllers/qtl_table_controller.rb:25:in `save'

Rendered ruby/1.8/gems/actionpack-3.0.8/lib/action_dispatch/middleware/templates/rescues/missing_template.erb within rescues/layout (0.8ms)

編集:app / controllers / qtl_table_controller.rb

...
  def save
    logger.debug "\nLOOK! WE SAVED! #{params[data]}\n"
    render "index"
  end
...

render:layout => falseを追加しましたが、テンプレートが見つからないというエラーが発生します。また、誰かがコントローラーにロジックを追加し始めたと提案しましたが、データパラメーターは本当にファンキーに見えます。それは私が文字列に変えた配列の配列であるはずです。もう少し助けてもらえますか?

4

3 に答える 3

0

AJAXで応答させたいので、追加することでRailsに何もレンダリングしないように指示できます。

render :layout => false

コントローラーアクションに

于 2012-06-25T22:36:31.147 に答える
0

でテンプレートを作成するapp/views/qtl_table/save.html.erbか、コントローラーで何かをレンダリングする必要があります。コントローラアクションで何もレンダリングされない場合、Railsはデフォルトのテンプレートを表示しようとしますが、テンプレートはありません。

于 2012-06-25T22:22:54.287 に答える
0

Riatecheの答えに同意しました。正しく応答するには、コントローラーにロジックを追加する必要があります。

コンソールの出力を見ると、パラメーターハッシュにjsonデータが含まれていることがわかります。コントローラの値に次のようにアクセスするだけです。

params["125,0,\"\",\"Ph upt 1-2\""]
params["125,0,\"\",\"Ph upt 1-2\""][","]

あなたはそれをあなたのactiverecordモデルにマッピングして保存することができます。

于 2012-06-25T22:27:35.167 に答える