如何从ruby on rails中的java脚本调用ROR方法?

时间:2011-01-07 10:58:09

标签: javascript ruby-on-rails ruby ruby-on-rails-3

我有点击按钮的方案将调用javascript“showpopupfunc()”,然后需要执行ROR menthod“addmcf” - 这可能吗?

<button class="button" id="buttonUpload" onclick="showpopupfunc()" >&nbsp;</button>

<script>
        function ajaxFileUpload()
        {
            $j.ajaxFileUpload
            (
                {
                    url:'/ptcgeodatabase',
                    secureuri:false,
                    fileElementId:'fileToUpload',
                    dataType: 'json',
                    success: function (data, status)
                    {
                        if(typeof(data.error) != 'undefined')
                        {
                            if(data.error != '')
                            {
                                alert(data.error);
                            }else
                            {
                                alert(data.msg);
                            }
                        }
                    },
                    error: function (data, status, e)
                    {
                        alert(e);
                    }
                }
            )
            return false;
        }

        function showpopupfunc()
        {
            **window.location="http://127.0.0.1:3006/ptcgeodatabase#addmcf"**
            showPopWin2('processing', 200, 70, null);
            setConfirmUnload(false);


            ajaxFileUpload();
        }
        function addFiles(selectObject, seltext, selvalue)
        {   
            var optionObject = new Option(seltext,selvalue);
            var optionRank = document.getElementById("mcffiles").options.length;
            if(optionRank <= 9)
            {
                document.getElementById("mcffiles").options[optionRank]= optionObject;
            }
            else
               alert('Only 9 files can select')
        }   
        </script>

控制器:

def addmcf
# i am doing some operation
 @path=RAILS_ROOT.to_s+"/tmp/upload"
      @mcfdir=Dir[@path+"/*"]
      @x=''
      for i in 0..(@mcfdir.length-1)
        @x=@x+@mcfdir[i].to_s+'|'
      end
end

1 个答案:

答案 0 :(得分:2)

您可以使用HTTP请求(例如,AJAX请求)来访问URL,该请求将执行相应控制器操作中的代码。

例如,使用默认路由 http://127.0.0.1:3006/ptcgeodatabase/addmcf

应执行PTCGeoDatabaseController#addcmf

(大写可能不同,结果取决于定义的路线。)