【问题标题】:Problems Creating Dynamic Select Menus Rails 3.2.6创建动态选择菜单 Rails 3.2.6 的问题
【发布时间】:2012-07-21 01:14:09
【问题描述】:

几周以来,我一直在尝试寻找一种解决方案,以根据所选国家/地区填充州下拉菜单。看来我将不得不使用某种类型的脚本来使其正常工作。不幸的是,我根本不懂现代脚本。我看过 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 部分,我不知道第 2 和第 3 段代码是放入 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) %>

说我完全迷失了是轻描淡写。

任何帮助将不胜感激。

【问题讨论】:

    标签: jquery ruby-on-rails jquery-plugins


    【解决方案1】:

    我自己对 js/jQuery 不太熟悉,但这些类似的问题可能会有所帮助:Observe_field in rails 3Rails observe_field using jQuery。第一个问题提到了this blog,其中包含旧Prototype observe_field 辅助方法在rails 中的jQuery 等效代码,第二个问题链接到something similar on git

    【讨论】:

    • 自从我写了这个问题后,我决定研究这个项目的其他功能。一路上我读到了一些关于observe_field的东西。我一定会重温这一点。上学期我最后上了 Ruby 课。我将参加 JavaScript 在线课程,因为我的老师认为所有 Web 开发人员都需要它来填补所有 Web 开发工具不可避免地存在的漏洞。非常感谢您的建议。
    • 没有问题。我也需要学习 JavaScript。同时,您可以通过使用grouped_collection_select 将其放入一个选择框而不是两个选择框来解决它。让我知道你最后用 js 做什么,因为我会感兴趣的。
    • 我会把它作为这个问题的答案发布:)
    猜你喜欢
    • 2015-03-03
    • 2021-04-14
    • 1970-01-01
    • 2012-04-04
    • 2012-06-16
    • 1970-01-01
    • 1970-01-01
    • 2012-11-01
    • 1970-01-01
    相关资源
    最近更新 更多