2012-05-04 23 views
0

我想根據以前的collection_select選擇填充collection_select的選項。我有一項選擇體育項目,我希望通過基於這項運動的團隊填補下一個選擇。軌道上的紅寶石3,填充選擇列表取決於從以前的選擇選擇,紅寶石的方式

問題是我發現的所有例子都是針對老版本的ROR,所以我決定在這裏問。我知道我必須添加一些令人討厭的東西,如:

html_options = {:onchange=>'d=$("#player_sports_id").val();$.ajax({type: "GET", url: "/players/returnsel1.js?sports_id="+d, dataType: "script" });'}) 

要求玩家#returnsel1並得到返回的returnsel1.js.erb。 在returnsel1我有可變

@teamstoreturn=Teams.where(:sport_id=params[:sport_id]) 

那麼我們應該如何jQuery的returnsel1.js.erb樣子? 謝謝。 Dorijan

EDIT1: 這裏是它是如何看,但它不工作:

html_options = {:onchange=>'d=$("#player_sports_id").val();$.ajax({type: "GET", url: "/players/returnsel1?sports_id="+d, dataType: "script",success: function(data){ $("#player_teams_id").html(data)} });'}) 

,並在控制器它是這樣的:

def returnsel1 
    @teamstoreturn=Team.where(:sports_id=>params[:sports_id]) 
    render :inline => "<%= collection_select(:player, :teams_id, @teamstoreturn, :id, :naziv) %>" 
    end 

如果我去/播放器/ returnsel1?sports_id = 2我得到正確的下拉菜單

我做錯了什麼?

EDIT2: 應該有數據類型:「HTML」,而不是數據類型:「腳本」 ,現在它正在努力:)

回答

1

你應該繼承與函數的阿賈克斯要求,它可以處理成功的答案。沒有這個,答案就會變得更糟。這個函數應該包含一個jQuery代碼,以改變其他選擇內容。

html_options = {:onchange=>'d=$("#player_sports_id").val();$.ajax({type: "GET", url: "/players/returnsel1.js?sports_id="+d, dataType: "script", success: function(data){ $("#other_box_part").html(data)} });'}) 

這樣你就改變了這個元素,所以你必須把它作爲一個必須被插入的html片段來渲染。所以在答案中沒有JavaScript代碼是必需的,只有HTML。例如:

<%= select_tag ... %> 
+0

嗯......它似乎沒有工作......我編輯了我的問題 – user899119

+1

什麼是症狀?當你發出ajax請求時會發生什麼? – Matzi

+0

什麼也沒有,甚至沒有錯誤......但我弄明白了,我應該改變dataType:「html」 – user899119