2010-02-26 167 views
1

所以我一直沒有這樣做很久,但我完全停留在此。我有一個模型,看起來像這樣(爲簡潔起見):鏈接列表從屬選擇框

class ReqBreakdown < ActiveRecord::Base 
    belongs_to :next_level #nil if lowest level 
    belongs_to :previous_level #nil if highest level 
    belongs_to :requirement_level 
end 

我需要一種方法來從UI中構建這些列表。我最初設想使用如下所述的鏈接下拉菜單:http://blog.jatinder.me/2006/09/cascading-select-boxes-with-rjs.html,但我甚至無法在控制器上調用該操作。我將描述的javascript複製到我的application.js中,確保它包含在我的佈局中,將幫助器添加到application_helper.rb,並將支持操作添加到我的控制器,但沒有運氣。老實說,我甚至不確定它會滿足我的要求。 選擇規則有:

  1. 最多4層(即4個選擇框)。
  2. 沒有循環引用(即以前選擇的所有項目都必須從下一個文本框上拆下才能進行選擇)
  3. 選擇的對象都是同一類型(requirement_level)

有什麼建議?

回答

1

既然你還在開始,那麼我可以建議你觀看優秀的專欄節目嗎?特別是在一個位置:

我知道這可能不是你要找的答案,但因爲你有麻煩您的控制器掛接到你想要的東西,你的問題真的可以在任何地方。 Ryan(railscasts的作者)在解釋小內容方面做得很好,併爲他的所有劇集提供完整的源代碼。

如果這是我,我可能會做兩件事之一。

  1. 溝渠rjs,並使用jquery客戶端幾乎所有的東西。 jquery真的很擅長這裏。如果數據列表是靜態的,那就更好了,但如果不是的話,你可以使用ajax爲你更新。
  2. 根據情況查看不同的UI元素,可能是多選框或一組複選框。

我對你所尋找的方向沒有任何問題,但既然你對這個問題的技術細節有點輕鬆,我真的只是給出一些一般性的建議而不是特定的答案。

祝你好運!

+0

謝謝,我正在看這個。另一個noob問題,但這次是關於JavaScript。在特定的RailsCast中,他的javascript包含以下調用: $('element_id')。getValue()// element_id是從select標籤中獲取值時的選擇標記 。但是,這似乎並不是有效的JavaScript,至少就Firebug而言。我錯過了什麼,或者這是不正確的? – 2010-02-27 19:17:06

+0

在該railscasts中,他使用提供此功能的原型庫。我更熟悉jquery,但他們都有類似的想法,可以通過ID或CSS類在dom中選擇事物。看看這裏:http://api.prototypejs.org/dom/dollar.html'$$'函數對原型世界中的類也做同樣的事情。基本上,你可以用'$'或'$$'選擇一些東西,然後用hide,show等方法對它進行操作。原型和jquery本身都是類似的語言,但是**值得**投入時間學習他們。 – dpb 2010-02-27 20:48:53