2016-09-27 162 views
0

我想通過ajax將一些數據從視圖發送到控制器。在導軌中將數據從視圖發送到控制器

我在 應用程序/視圖/靜態/ home.html.erb以下代碼

<script type="text/javascript"> 
     var dummy = "testtext"; 
     $('#finish').click(function() { 
      $.ajax({ 
      url: '/finish', 
      type: 'POST', 
      data: dummy, 
      dataType: 'text' 
      }); 
     }); 
     </script> 

     <body> 
     <%= button_to "Finish", {:action => 'finish', :controller => 'static'}, :method => :post, id => 'finish' %> 
     </body> 
在 應用程序/視圖/靜態/ finish.html.erb

<p><%= @data %></p> 

應用

/controller/static_controller.rb

def finish 
@data = params[:data] 
end 

in routes.rb

post 'finish' => 'static#finish' 

我的理解是,在按鈕點擊AJAX腳本將被執行,Rails應用將存儲從視圖中傳遞的數據。這似乎並不奏效。我不確定我對流程的理解是否正確。

+1

請嘗試發送JSON請求。 Rails不會將請求主體解析爲「text/plain」請求的參數。 – max

回答

0

因爲你調用PARAMS [:數據]控制器,你需要指定{數據:空}在AJAX數據部分

<script type="text/javascript"> 
    var dummy = "testtext"; 
    $('#finish').click(function() { 
     $.ajax({ 
     url: '/finish', 
     type: 'POST', 
     data: {data: dummy}, 
     dataType: 'text' 
     }); 
    }); 
    </script> 

而且你可能想在你的AJAX調用響應您的控制器使用以下內容

def finish 
    @data = params[:data] 
    respond_to do |format| 
    format.json { insert_your_code_here } 
    end 
end 
+0

您可能還需要在click()函數結束時返回false,否則瀏覽器將開始發送ajax請求,然後提交'button_to'表單,導致該操作被擊中兩次 – gmcnaughton

相關問題