让Javascript下拉菜单在rails上使用ruby

Getting the Javascript dropdown menu to work with ruby on rails

本文关键字:ruby rails Javascript 下拉菜单      更新时间:2023-09-26

我刚刚开始编程之旅,很多事情都不懂,我最近的问题是试图获得一个javascript下拉菜单来处理我的ruby对象。

我目前有这个代码在我的视图

<tr class="<%= inv.special %> <%= inv.hotel_id %>">

当我检查元素时,这就是显示的内容。

<tr class="true 4" style="display: table-row;">

这就是我使用javascript所做的,但似乎无法使inv.hotel.id正常工作。如有任何帮助,将不胜感激

<script type="text/javascript">
                        $(function(){
                            $(".dropdown-menu li a").click(function(){
                                    choice = $(this).text()

                                    id_of_hotel = $(this).attr('inv.hotel_id');
                                    if(choice == "Normal"){
                                        $("tr.false").show()
                                        $("tr.true").hide()
                                    }else if(choice == "Special"){
                                            $("tr.false").hide()
                                            $("tr.true").show()
                                        // else if(choice == "4"){
                                        //  $("tr.false" + id_of_hotel).show()
                                        //  $("tr.true" + id_of_hotel).hide()
                                        //  }
                                        // else if(choice == "2"){
                                        //  $("tr.false." + id_of_hotel).show()
                                        //  $("tr.true" + id_of_hotel).hide()
                                            }
                                    }
                                            $(this).closest(".dropdown").find(".btn").text(choice)
        // $(".btn").text($(this).text());
        // $(".btn").val($(this).text());
      });
    });
</script>

我认为HTML中不允许以数字(或仅以数字)开头的类。无论哪种方式,您的javascript都试图引用一个名为"inv.hotel_id"的属性,但该属性并不存在,因为您从未在客户端指定要链接到该名称的数据。元素中仅有的属性是classstyle。将此类数据传递给javascript/jQuery的一种更优雅的方式可能是使用data-*属性。所以,像这样的东西:

<tr data-id="<%= inv.hotel_id %>">

然后,如果要引用该数据属性,可以使用$(this).data("id")

您仍然可以使用true/false类,因为您使用它们来引用对象的方式。类和id:s对选择器很好,但对其他杂项数据不好。