2011-06-08 17 views
0

相關的模型數據,我有兩個型號我如何可以顯示在Rails形式

class Car 
    has_many :engines       
end 

class Engine 
    belongs_to :car 
end 

在車上形式我有一個選擇字段,用戶可以選擇的發動機類型。該列表可能是「1.4L; 1.6L; 2.0L ...」

假設我想在用戶選擇引擎時顯示引擎模型的其他信息。這應該顯示在汽車表格上。這可能是例如必和必拓,最高轉速,...等

我該如何設置這樣的東西了。我想有兩個方面:

  1. 如何不使用 字段顯示從車上形式發動機 模型數據(該數據是不可編輯)。

  2. 如何動態更新此數據 當用戶在選擇字段中選擇 選項時。

任何人都可以指出我的出發點。我有點迷失在哪裏開始。

非常感謝!

回答

0

如果您在表單中使用了collection_select,那麼在您的collection_select調用中設置了兩個參數,如:id和:name。 :id是調用以確定選項標記值的方法,並且:name是用於顯示選項標記內容的方法。

解決方案:在您的引擎模型中創建一個方法(例如:name_for_select),該方法返回一個字符串,其中包含有關引擎的更多信息,並調用collection_select:id,:name_for_select。

+0

嗨pduersteler感謝您的建議。這看起來很有希望,我正在通過API試圖理解更多。 – 2011-06-09 13:18:43

+0

很匆忙,這是一個未經測試的例子:http://pastie.org/2046841,很好閱讀:http://api.rubyonrails.org/classes/ActionView/Helpers/FormOptionsHelper.html#method-i-collection_select – pduersteler 2011-06-10 09:13:34

+0

嗨pduersteler,這不完全是我正在尋找的答案。我曾希望直接在表格上顯示相關數據。然而,這是一個優雅的選擇,我學到了一些新東西。我現在要使用它,但會繼續尋找其他方法。謝謝! – 2011-06-11 06:12:55

0

這叫做嵌套表單,如果你google的話,你會發現很多提示和技巧。例如。請查看thisthis教程。

您還應該考慮使用表單生成器,如formtasticsimple_form:他們有很多助手可以讓您的生活更輕鬆。

+0

感謝您的建議。嵌套表單並不是我正在尋找的。選擇引擎字段與汽車模型上的engine_Id綁定。儘管相關的引擎數據應該顯示爲一個顯示,而不是一個編輯模板。即這些數據僅供參考,不適用於此視圖。我有道理嗎?我想我可以用引擎部分來顯示數據,並在選擇字段上刷新數據的ajax事件。這聽起來像是正確的做法嗎?你能推薦一個Ajax的傻瓜指南來幫助我學習如何把它放在一起嗎?謝謝。 – 2011-06-09 09:57:18

+0

這種方式調用了嵌套窗體,因爲您可以用一種形式編輯對象的屬性以及一個或多個嵌套對象。在你的情況下,它總是隻有一個嵌套對象,但它仍然是一個嵌套對象,所以是嵌套形式。所以教程是一個很好的開始。一個表單有一個單獨的後置動作,我認爲最好將你的嵌套對象數據一起發送。另一方面,如果你想在'show'頁面中尋找某種編輯,請查看我的gem進行內聯編輯(也允許選擇框):https://github.com/nathanvda/on_the_spot。我希望這有幫助。 – nathanvda 2011-06-09 10:24:39

+0

噢,我開始看到這裏的光。你有一套有限但固定的引擎嗎?而你只是想把汽車連接到現有的發動機上。當引擎改變時,你想顯示引擎的細節?是? – nathanvda 2011-06-09 10:26:35

相關問題