我有一个红宝石哈希,包含汽车品牌和型号,然后是年份。 它看起来像:
makes_a={"saturn"=>{"sky"=>["2007", "2009", "2008"], "l-series"=>["2004", "2000", "2005", "2003", "2001", "2002"]}}
我想填写3个选择列表1)制作2)模型和3)年 当选择汽车制造(土星)时,应填充第二个列表 可用的两种型号(天空和L系列)。'
当选择特定模型(天空)时,它应该使用年份选项填充第3个选择列表。
我使用以下rails代码段填充第一个选择列表:
<%= 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)
由于
答案 0 :(得分:1)
如何将所有品牌和型号分配到&#39;模型&#39; javascript变量作为json对象?每次选择列表更改时,您都可以遍历数据并重新填充表单元素。
<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数据。
答案 1 :(得分:-1)
This post为我解决了这个问题。
正如您所说,我没有使用数据库中的数据。只需忽略进行查询的控制器行并将params [:id]传递给partial。此解决方案还允许您将数据从哈希(我更愿意使用已排序的数组)传输到数据库,并且如果您的应用程序将来变得更复杂,则最少修改代码。