【问题标题】:Populate select list options from ruby hash using jQuery使用 jQuery 从 ruby​​ 哈希填充选择列表选项
【发布时间】:2012-01-30 05:11:43
【问题描述】:

我有一个 ruby​​ 哈希,其中包含汽车品牌和型号以及年份。 它看起来像:

makes_a={"saturn"=>{"sky"=>["2007", "2009", "2008"], "l-series"=>["2004", "2000", "2005", "2003", "2001", "2002"]}}

我想填充 3 个选择列表 1) 制造 2) 型号和 3) 年份 When a car make is selected (saturn), the second list should get populated with 提供 2 种型号(sky 和 ​​l 系列)。'

选择特定模型(天空)后,它应该使用年份选项填充第三个选择列表。

我使用以下 rails sn-p 填充第一个选择列表:

<%=  select_tag "make-select", options_for_select(@all_makes_models.to_hash.keys.sort, params[:make]), :class=>"car-make-select" %>

我不确定如何使用 jquery 访问 ruby​​ 哈希。

尝试像下面这样访问 ruby​​ 哈希会给我 javascript 语法错误。

$('#make-select').change(function()
{       
    make = $(this).attr('value');
    models = '<%= @all_makes_models[" + make + "].to_hash.keys %>';
    alert(models);
    $('#car-models').val(models);
});

关于如何在 javascript 中访问哈希的任何想法? (不是 js.erb)

谢谢

【问题讨论】:

    标签: jquery ruby-on-rails select hash


    【解决方案1】:

    如何将所有品牌和型号作为 json 对象分配给“models”javascript 变量?每次选择列表更改时,您都可以遍历数据并重新填充表单元素。

    <script type="text/javascript">
        var models = <%= @all_makes_models.to_json %>;
    
        $(document).ready(function() {
            $(".car-selector").change(function() { 
                // Traverse JSON object, repopulate select lists.
            });
        });
    </script>
    

    如果您不想在默认情况下在视图中呈现那么多数据,您可以使用相同的概念,但通过提交部分完成的表单通过 ajax 获取 JSON 数据。

    【讨论】:

      【解决方案2】:

      This post 为我解决了这个问题。

      和你一样,我没有使用数据库中的数据。只需忽略进行查询的控制器行并将 params[:id] 传递给部分。如果您的应用将来变得更复杂,此解决方案还允许您将数据从哈希(我宁愿使用已排序的数组)传输到数据库,只需最少的代码修改。

      【讨论】:

        猜你喜欢
        • 2016-01-04
        • 1970-01-01
        • 2018-06-28
        • 1970-01-01
        • 1970-01-01
        • 2011-12-26
        • 1970-01-01
        • 2018-10-15
        • 2019-08-27
        相关资源
        最近更新 更多