2012-07-23 139 views

回答

6

你一定要用jQuery來做到這一點(使用不顯眼的方法來儘可能保持乾淨)。在你的js文件,你應該有這樣的事情......

$('#select_tag_id').change(function(){ 
    $ajax({ 
    url: "remote_action_in_your_controller", 
    type: "GET", 
    data: {select_tag_value: $('#select_tag_id option:selected').text()}, 
    }) 
}); 

這是簡單,因爲它應該是,如果你只是想打電話給你的控制器上的遠程操作(請注意,我通過選擇價值選項,因爲你可能想要這個值做一些事情)。如果在執行ajax調用之後需要執行某些操作,請使用succes選項。希望這可以幫助。

+2

我想運行一個動作,它通過ajax發送的數據執行一些計算,然後在同一頁上渲染一個局部視圖。這怎麼可以在這裏完成? – 2012-07-25 14:31:30

+1

應該是'$ .ajax' – 2016-06-17 17:41:43

0

你必須用JQuery來做到這一點。事情是這樣的,當文件已準備就緒,:

$('#your_select_tag').change(function() { 
    $.ajax({ type: "GET", 
      url: "http://your_url/", 
      success : function(text) { 
       alert('success') 
      } 
    }); 
}); 

看到該文檔:http://api.jquery.com/change/http://api.jquery.com/jQuery.ajax/

+0

我想運行一個動作,它通過ajax發送的數據執行一些計算,然後在同一頁面上渲染一個局部視圖。這怎麼可以在這裏完成? – 2012-07-25 14:31:56

+0

您可以在更改功能中進行計算。之後,你可以創建一個app/views/controllers/action.js.erb,你可以在你的文件中做你想做的。這裏有一個例子:http://stackoverflow.com/questions/300498/how-do-i-include-html-in-a-js-rails-response。 – Dougui 2012-07-25 14:46:54

+0

對不起,我想我可能不清楚。我想從select_tag中選擇選項(比如'foo')給我的控制器動作,它會查找數據庫中'foo'的細節,將它們存儲在映射中,然後同一控制器動作將呈現一部分顯示地圖上的細節。這如何實現? – 2012-07-25 15:14:27

0

remote: truedata-remote="true"添加到html元素。只需將其添加爲select_tag選項中的CSS類即可。

<%= select '', '', @coaches, {}, { data: {remote: true } } %> 

請注意data: { remote: true }被使用,因爲"data-remote"不紅寶石友好。