2014-01-21 198 views
0

多發性選擇選擇框我用4代表填寫的圖表,類似這些:與Ruby on Rails的

@colors    @types     @fuels 
----------------- --------------------- ------------------- 
| ID | Color | | ID |  Type  | | ID | Fuel | 
----------------- --------------------- ------------------- 
| 1 | 'Red' | | 1 | 'SUV'  | | 1 | 'Gasoline' | 
| 2 | 'Green' | | 2 | 'Truck'  | | 2 | 'Diesel' | 
| 3 | 'Blue' | | 3 | 'Sports Car' | | 3 | 'Electric' | 
| 4 | 'Yellow' | | 4 | 'Compact' | | 4 | 'Hybrid' | 
----------------- --------------------- ------------------- 

最後一個表是訂單表,與此類似:

@orders 
-------------------------------------------------------- 
| order_id | color_id | type_id | fueld_id | purchases | 
-------------------------------------------------------- 
| 1  | 2  | 1 | 4  |  2  | 
| 2  | 1  | 4 | 1  |  4  | 
| 3  | 2  | 2 | 2  |  6  | 
| 4  | 4  | 1 | 4  |  2  | 
| 5  | 1  | 4 | 2  |  1  | 
| 6  | 3  | 3 | 3  |  1  | 
| 7  | 3  | 3 | 3  |  2  | 
| 8  | 2  | 1 | 1  |  2  | 
-------------------------------------------------------- 

我有一個控制器輪詢他們所有的數據來製作圖表。到現在爲止還挺好。現在,我想讓用戶從每個表中選擇一個或多個屬性,以創建動態訂單頁面。

我的方法是顯示3個選擇框(列表框),可以讓用戶進行選擇,並在此基礎上修改@orders表。這些修改將落在不同的動作,說:

def newtable 
    ... 
end 

我知道如何通過SQL做到這一點,但我也不太清楚如何使用RoR的正確顯示這些列表框。我的想法是選擇每個表格的一個,幾個或所有元素。

將form_for伎倆?我試圖使用它,但我沒有一個基於查詢的模型,我不知道如何創建一個(或者如果這種方法實際上是可行的)。

謝謝。

+0

這些變量是如何設置的? 「@colors @types @fuels」 – beck03076

+0

對於初始視圖,它們具有來自它們各自模型的所有記錄。所以那將是:「\ @colors = Color.all,@ \ types = Type.all,@ \ fuels = Fuel.all」。呃,對不起,我不知道如何逃脫@的,我不得不增加額外的字符,因爲該網站認爲我試圖提及一個用戶。 – user3209270

+0

你說,「將form_for做伎倆?我試圖使用它,但我沒有一個模型來查詢的基礎上,」類型,燃料和顏色是模型 – beck03076

回答

0

嗯,我不熟悉的軌道4​​,但我可以提供一個答案,每Rails的3

首先進行必要的協會

,並在您的訂單控制器這樣定義

def create 
----your stuff--- 
end 

一個新的方法,在您的訂單頁:

<%= form_tag :action => 'create' %> 

<%= collection_select :order,:color_id, @colors,'id','Color',{:label=> 'Select a Color',:prompt=> 'Select'} %> 

<%= collection_select :order,:type_id, @types,'id','Type',{:label=> 'Select a Type',:prompt=> 'Select'} %> 

<%= collection_select :order,:fuel_id, @fuels,'id','Fuel',{:label=> 'Select a Fuel',:prompt=> 'Select'} %> 

<%= submit_tag "Create" %> 

希望這個作品。

注:這只是一個示例代碼,供您理解。

+0

謝謝。當我完成關聯後,我會試試這個。 – user3209270

+0

我幾乎可以按照自己的意願來工作。這確實有用,但它是一個組合框。有沒有辦法讓它成爲一個列表框?這樣你可以選擇多個選項?我嘗試在屬性列表中添加「:multiple => true」,但這並沒有做到這一點。 – user3209270

+0

我想通了,還有另一部分我不包括的參數。我覺得這就是。當我回到這裏時,我會休息幾個小時並更新。謝謝。 – user3209270

0
<%= f.select(:color, @color.collect {|p| [ p.name, p.id ] }, 
             { :prompt => "Please select"}, 
             { :multiple => true, :size => 4 }) %> 

要配置控制器接受多個參數:Click Me

您可以創建一個單獨的模型作爲一個Ruby類來處理這個,如果你願意的話,但只有當你發現其他車型過於侷促。希望幫助