2013-01-08 31 views
0

我想在ruby中構建一個動態下拉列表,我的屏幕上基本上有兩個下拉列表,我使用ajax從數據庫中獲取第二個下拉列表的值取決於值在第一dropdown..I選擇的是一個新手,紅寶石和不知道如何在羅得島紅寶石使用AJAX的語法..我用Ruby on Rhodes使用Ajax調用

JavaScript代碼...

$.post("/app/Settings/dropdown", 
{ value:a }, 
function(data){ 
alert(data); 

} );

-----局部控制器代碼

在這裏輸入的代碼

def dropdown 

@a = @params['value'] 
    puts @a 
if @a.eql?"Auto" 
    mystring="auto1|auto2|" 
    else 
    mystring="personal1|personal2|" 
    end 
end 

我能得到的任何參數通過Ajax調用發送到controller..My的問題是如何從控制器發回數據在該Ajax調用函數,以便我可以使用該信息來創建一個動態的下拉列表..我想發送這個mystring函數(數據)?

回答

1

在Rhodes中,控制器操作只能渲染其他操作或返回由部分組成的字符串。因此,爲了使用AJAX填充下拉列表,您必須呈現與作爲對AJAX調用的響應返回的操作相關聯的視圖。

控制器 '下拉' 作用: -

def dropdown 
    @a = @params['value'] 
    if @a.eql?"Auto" 
     @optionList[:auto1]="auto1" 
     @optionList[:auto2]="auto2" 
    else 
     @optionList[:personal1]="personal1" 
     @optionList[:personal2]="personal2" 
    end 
    render :action => "dropdown" 
end 

'dropdown.erb' 視圖: -

<% optionList.each do |key, value| %> 
    <option value="<%= key %>"><%= value %></option> 
<% end %> 

AJAX調用: -

$.post(
    "/app/Settings/dropdown", 
    { value:a }, 
    function(data){ 
     data = data.replace("<div>",""); 
     data = data.replace("</div>",""); 
     alert(data); 
    } 
}); 

確保您更換div標籤在AJAX響應中,因爲Rhodes自動包圍AJAX響應與div標籤。