数周以来,我一直在尝试找到一种解决方案,以根据所选国家/地区填充州下拉菜单。看来我将不得不使用某种类型的脚本来使其正常工作。不幸的是,我根本不懂现代脚本。我看过 jQuery,但无法告诉你它在做什么。
我有一个用户模型,其中用户属于一个国家和州。一个国家有许多用户和许多州。一个国家属于一个国家,有很多用户。
我订阅了 RailsCasts 以访问修改后的 Dynamic Select Menu #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 部分,我不知道第二和第三段代码是放到 application.js 还是其他地方。它的写作方式我会这么认为。在“视图”部分中,它说要在类别文件夹下创建一个视图,在我的情况下是国家文件夹。我的视图文件夹中只有一个用户文件夹。我不知道在这一点上我会把这个观点放在哪里。
我在部分中有我的 collection_select 语句,它以新的和编辑的形式呈现。我不知道这是否会引起一些混乱。从我所了解的一点点看,当我查看页面的源代码时,我在任一页面(user_country_id,user_state_id)中看到的 id、标签等都没有任何区别。
如果可能的话,我想使用添加到状态的 collection_select 语句的 where 子句来执行此操作。如果可以在 country collection_select 语句中引用选定的值,那对我来说会容易得多。我在想这样的事情:
<%= collection_select(:user, :state_id, State.where(:country_id => user_selected_country_id).order('name'), :id, :name) %>
说我完全迷失了是一种轻描淡写的说法。
任何帮助,将不胜感激。