2016-01-05 137 views
1

我正在使用rails 4和javascript,這裏是我的問題: 我需要使用按鈕更改3個div的值。 div的值由來自該頁面控制器的ruby函數生成。 代碼:使用javascript和ajax更改3 div的內容

<% $number= randNumbers %> 
<div id="1"><%= $number[0] %></div> 
<div id="2"><%= $number[1] %></div> 
<div id="3"><%= $number[2] %></div> 
<button id="btn1" >Click me!</button> 

這裏的紅寶石方法

def randNumbers 
n1=rand(1..10) 
n2=rand(1..10) 
n3=rand(1..10) 
return array=[n1,n2,n3] 
end 

,所以我需要召回紅寶石功能來生成新的隨機數,每次我點擊按鈕「BTN1」無需重新加載頁面。 我知道我必須使用ajax或jquery,但我真的不知道如何將它與ruby方法一起使用。 感謝您的幫助:d

+0

請發表您的,您有這個目的夾生代碼。 – RAJ

+0

[如何做一個Ajax GET請求從rails獲取數據並將其傳遞給javascript(谷歌地圖)?](http://stackoverflow.com/questions/11589508/how-to-do-an-ajax -get-request-to-data-from-rails-and-pass-it-to-javascriptg) – Drenmi

回答

0

你可以嘗試以下方法:在查看

HTML代碼:

刪除代碼<% $number= randNumbers %>

更改代碼:

<div id="1"></div> 
<div id="2"></div> 
<div id="3"></div> 
<button id="btn1" >Click me!</button> 

的Javascript驗證碼:

$(document).ready(function() { 
    call_ajax(); 
}); 

$("#btn1").click(function(){ 
    call_ajax(); 
}); 

function call_ajax(){ 
    $.ajax({ type:'POST', url:'/controller/get_random', data: {}, 
    success:function(data) 
    { 
     $("#1").text(data.arr[0]) 
     $("#2").text(data.arr[1]) 
     $("#3").text(data.arr[2]) 
    }, 
    error:function() 
    { 
     // Handle error if Ajax fails 
    } 
    }); 
} 

方法控制器:

def get_random 
    n1=rand(1..10) 
    n2=rand(1..10) 
    n3=rand(1..10) 
    array=[n1,n2,n3] 
    render json: {arr: array} 
end 

而且在routes.rb添加路由:post '/controller/get_random'

+0

謝謝你的工作! –

+0

@LukeSmith您隨時歡迎您。雖然如果你贊成並[接受](http://meta.stackexchange.com/q/5234)答案會很有幫助。這是謝謝你的方式。 –