2009-12-18 82 views
1

我需要一個更完整的示例,瞭解如何根據Ruby on Rails中第二個選擇框的結果更新選擇框。我問了這個已經here。我已經閱讀了這篇文章的反饋,但是沒有什麼好運氣,我已經嘗試了好幾個小時。任何人都知道更好(更完整)的例子嗎?更新基於另一個選擇框(Ruby on Rails)

回答

1

這通常在Javascript中處理。我不是特別喜歡編碼Javascript,所以我在我的應用程序中做的是使用form_observer(一個Rails幫助器,它使用Prototype Javascript庫來觀察表單的輸入變化),並在HTML中更新DIV第二個選擇框,基於AJAX調用的結果。由於AJAX與我的服務器對話,我可以在Ruby中編寫任意複雜的邏輯來呈現新的HTML。

示例代碼:

#goes in view 
<%= Code to render the first list box. %> 
<%= render :partial => 'second_list_box_partial', :locals => {:selected = insert_magic_here } %> 

<%= observe_field(:first_list_box, 
    :url => { :action => :second_box_ajax }), 
    :frequency => 0.5, 
    :update => :second_list_box_div, 
    :with => %Q| 'value=' + $('first_list_box').value; | 
    %> 

#goes in controller 
def second_box_ajax 
    first_box_value = params[:value] 
    #magic goes here 
    @selected = #more magic 
    render :partial => 'second_list_box_partial', :locals => {:selected => @selected}, :layout => false 
end 

#goes in partial 
<div id="second_list_box_div"> 
    Actual code to render list box goes here. 
</div> 
+0

的感謝!我現在要測試這個代碼並回復給你... – Kara 2009-12-18 04:54:34

+0

好吧,我得到一個錯誤,說「奇數號哈希列表」,它指出了「:選定」的結尾風景。另外我不知道insert_magic_here是什麼。這是Ruby內置的東西嗎? – Kara 2009-12-18 05:00:45