2011-08-23 178 views
1

我有一組3個collection_selects,我想篩選下一個選擇。在第一個選擇框中選擇一個項目後,它應該限制第二個和第三個選擇框的可能值。Ruby-on-Rails:根據之前選擇填充選擇框

類似的數據模型將如下......

表和字段

  • 鎖定
    • lock_id
    • brand_id
    • master_id
    • regular_id
  • 門鎖品牌
    • brand_id
  • 主密鑰
    • master_id
    • brand_id
  • 正規鑰匙
    • regular_id
    • brand_id

因此,儘管在填寫添加新鎖將有品牌,掌握和定期選擇框。選擇一個品牌後,它會將主要和常規鍵限制爲僅限於所選品牌的鍵。

我發現了一些如何做到這一點的部分例子,但沒有一個是完整的。我會很感激如何實現這個完整的例子。

回答

3

您所要做的就是將選擇與一個事件偵聽器綁定,該事件偵聽器觸發填充包含後續選擇的其他2個部分的ajax請求。即

<%= form_for @thing, :remote => true do, :update => 'second_form' |f| %> 
    <%= hidden_field_tag 'form_partial', :value => 'form_2' %> 
    <%= select_tag :some_param, [[a,a],[b,b],[c,c]] :class => 'submittable' %> 
    <%= f.label :checked %> 
    <%= thing.name %> 
<% end %> 
<div id='second_form'> 
</div> 
<div id='third_form'> 
</div> 

class ThingController < ApplicationController 
    def update 
    checkboxes = some_logic_to_select_checkboxes from params[:some_params] 
    render :partial => params[:form_partial], :locals => {:select_menu => select_menu} 
    end 
end 

$('.submittable').live('change', function() { 
    $(this).parents('form:first').submit(); 
    return false; 
}); 

你的表單部分應該包含你的表單填充你希望啓用的任何選擇。思想對於重複表格來說是多餘的。

+0

我一直在尋找如何做到這一點與下拉選擇框,而不是複選框。你能相應更新嗎? – Jared

+0

你可以很容易地找到助手的'選擇'而不是複選框,並進行了替換。這個理論應該足以讓你開始。 –