2011-11-16 41 views
0

我想做一個鏈接下拉菜單。我用鋼軌下面產生下拉菜單下拉:使用javascript和rails做出鏈接的下拉菜單

select("post","id", current_user.admin.post.all.collect {|p| [p.title, post_path(p) ] }, {:include_blank => 'None', :prompt => 'Your Posts'}) 

由於這種紅寶石的結果,在下拉菜單如下:

<select id="post_id" name="post[id]"> 
    <option value="">Your posts</option> 
    <option value="">None</option> 
    <option value="/posts/1">Vacations</option> 
</select> 

,我試圖得到以下JavaScript的用戶發送到正確的網址:

$(document).ready(function() { 
    $("#post_id").change(function() { 
    var newwindow = $("#post_id option:selected").attr("id"); 
    window.location.replace(newwindow); 
    }) 
}); 

但是,它會嘗試去/管理員/不確定的,這個回來:

找不到管理員id = undefined

任何幫助,將不勝感激!

約翰

回答

0

你得到undefined,因爲沒有你的<option>元素都有id屬性,也許你想看看他們的價值觀:

$("#post_id").change(function() { 
    var newwindow = $("#post_id option:selected").attr("value"); 
    if(newwindow) 
     window.location.replace(newwindow); 
    else 
     // Complain or something. 
}); 

還是從<select>只是抓住價值直線:

$("#post_id").change(function() { 
    var newwindow = $("#post_id").val(); 
    if(newwindow) 
     window.location.replace(newwindow); 
    else 
     // Complain or something. 
}); 
+0

Doh!謝謝!對我來說太快了,甚至無法接受答案。當它進入新頁面時,我的「Your Posts」提示不再顯示在下拉菜單中。任何想法爲什麼? – John

+0

@John:你確定你到處都使用相同的'select'嗎?另外,同時使用':include_blank'和':prompt'有點奇怪:http://api.rubyonrails.org/classes/ActionView/Helpers/FormOptionsHelper.html –

+0

是的,select是在layouts/application.html .haml文件。對於:include_blank和:提示符是正確的。 。 。擺脫:include_blank。 – John