2012-07-21 83 views
1

我一直在嘗試幾個星期來找到一個解決方案來填充依賴於所選國家的狀態下拉菜單。好像我將不得不使用某種類型的腳本來實現這個功能。不幸的是,我根本不理解現代腳本。我看過jQuery,但不能告訴你它在做什麼。創建動態選擇菜單導軌的問題3.2.6

我有一個用戶模型,用戶屬於一個國家和州。一個國家有許多用戶和許多州。一個國家屬於一個國家,擁有許多用戶。

我訂閱了RailsCasts以訪問修改後的動態選擇菜單#88視頻。

http://railscasts.com/episodes/88-dynamic-select-menus-revised

看起來修訂是達不到的Rails的新版本。當我試圖使用RailsCast中的代碼時,我不得不稍微修改Rails代碼。我原樣使用腳本,但將用戶更改爲與我的Rails應用相匹配的用戶。如果所選國家/地區沒有國家/地區,腳本應該隱藏屏幕上的狀態信息。它一度隱藏了屏幕上的所有字段,而不僅僅是狀態。否則,我只是得到了按國家分組的所有國家列表。我決定在劇烈惡化之後刪除劇本。我很害怕讓我的整個編輯/創建頁面再次消失。花了我幾個小時,恢復了我的應用程序的舊版本,發現腳本導致了我的問題。

我決定看看這個,因爲Ruby on Rails代碼看起來並不那麼令人生畏。不過,我不明白這些代碼應該放在哪裏。我也不知道是否還有更多的工作需要我去做。類別將是我的國家和子類別將是我的國家。小部件將是我的用戶。至少我是這樣看待的。

http://samuelmullen.com/2011/02/dynamic-dropdowns-with-rails-jquery-and-ajax/

在jQuery的部分,我不知道如果第二& 3件代碼到application.js中或其他地方。它的寫法我會這樣認爲。在視圖部分,它說在類別文件夾下創建一個視圖,在我的情況下這將是國家文件夾。我的視圖文件夾中只有一個用戶文件夾。在這一點上,我不知道我會把這個觀點放在哪裏。

我有我的collection_select語句在新的和編輯呈現的部分。我不知道這是否會造成混亂。從我看到頁面的源代碼時所理解的內容來看,在頁面(user_country_id,user_state_id)中看到的ID,標籤等沒有任何區別。

如果有可能我想這樣做使用where子句添加到狀態的collection_select語句。如果可以在國家/地區collection_select語句中引用選定的值,那麼這對我來說會更容易。我在想這樣的事情:

<%= collection_select(:user, :state_id, State.where(:country_id => user_selected_country_id).order('name'), :id, :name) %> 

說我完全失去了是一個巨大的輕描淡寫。

任何幫助,將不勝感激。

回答

0

我對js/jQuery本人不太熟悉,但是這些類似的問題可能有所幫助:Observe_field in rails 3Rails observe_field using jQuery。第一個問題提到this blog,其中包含舊版Prototype observe_field輔助方法的jQuery等效代碼,第二個鏈接到something similar on git

+0

由於我寫了這個問題,我決定從事這個項目的其他功能。一路上我讀了一些有關observe_field的內容。我一定會重新考慮這一點。我最後一學期結束了Ruby課程。我將參加一個JavaScript在線課程,因爲我的老師認爲所有的Web開發人員都需要這樣做來堵住所有Web開發工具不可避免的漏洞。非常感謝這個建議。 – 2013-01-12 18:28:36

+0

沒有問題。我也需要學習JavaScript。與此同時,您可以通過使用['grouped_collection_select'](http://api.rubyonrails.org/classes/ActionView/Helpers/FormOptionsHelper.html#method-i-grouped_collection_select)將其放入一個選擇框而不是兩個。讓我知道你用js結束了什麼,因爲我會感興趣。 – undefinedvariable 2013-01-14 18:44:40

+1

我會發布它作爲這個問題的答案:) – 2013-01-16 13:31:59