2012-07-21 85 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