如何在View中调用Controller中的方法在RoR中的javascript事件?

时间:2014-03-02 19:42:21

标签: javascript ruby-on-rails

我是RoR的新手。我有一个使用javascript的视图文件。一旦按下按钮,我想在Controller中调用一个方法。我该怎么做。

JS代码:(folder_view.js)

function iterate(data){

    var folder_names = "";

    $.each(data.Folder, function(key, val) {
        folder_names = folder_names + "<ul> <li id= '" + val.folder_name + "'>
<a class='a' href='' onclick='updateDiv(val.folder_name)'>" + val.folder_name + 
"</a></li></ul>";
    });

    var divid = "folder";
    var view_var2 = jQuery("<div class='scrollbar ' id='divscroll' > <div class='content ' id = " + divid + "> <ul> <li> Folder " + folder_names + "</li></ul></div></div>");

    $('#folder_view').html(view_var2);

    tree_view(divid);

}

function tree_view(divid){
    $("#" + divid).jstree();
    $("#" + divid).on("changed.jstree", function (e, data) {
      console.log(data.selected);
    });
    $('button').on('click', function () {
        $("#" + divid).jstree(true).select_node('child_node_1');
        $("#" + divid).jstree('select_node', 'child_node_1');
        $.jstree.reference("#" + divid).select_node('child_node_1');
    });
}

这里,我在克隆文件夹时调用UpdateDiv方法。此方法在视图文件中可用,如下所示:

Folder_view.html.erb:

<script type="text/javascript" src="http://code.jquery.com/jquery-1.10.1.min.js" ></script>

<script type="text/javascript" src="/assets/folder_view.js"></script>    
<script type="text/javascript" src="/assets/jstree.min.js"></script>    

<script>
    $(document).ready(function() {
        $.getJSON('/assets/temp.json', function(data) {
            iterate(data);
        });
    });

    function updateDiv(data){
        //Call a function to controller
    }

</script>

<body class="bonita-body" ieonload="">

<div id="bonita_process_label" class="bonita_process_label"><div class="gwt-HTML">Console</div></div>
<div id="bonita-banneralthaut"></div>
<div id="bonita-banneraltbas"></div>
<div style='margin-top: 40px;'> <div id='folder_view'></div>

</body>

单击folder_name时会调用updateDiv方法。我想从控制器中获取一些特定于文件夹的元数据。在克隆时如何调用从视图到控制器的任何方法?

任何参考?

1 个答案:

答案 0 :(得分:0)

您需要使用本机XHR进行AJAX调用:

https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest

或者使用jQuery AJAX:

https://api.jquery.com/jQuery.ajax/