Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/54.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从控制器调用javascript函数_Javascript_Ruby On Rails - Fatal编程技术网

从控制器调用javascript函数

从控制器调用javascript函数,javascript,ruby-on-rails,Javascript,Ruby On Rails,可以从rails中的控制器调用javascript函数吗 否,但您可以输出将在视图中立即调用的javascript,例如 <script type="text/javascript"> function IWillBeCalledImmediately() { alert('called'); }; IWillBeCalledImmediately(); </script> 函数i将被中间调用() { 警报(“被呼叫”); }; 我

可以从rails中的控制器调用javascript函数吗

否,但您可以输出将在视图中立即调用的javascript,例如

<script type="text/javascript">
   function IWillBeCalledImmediately()
   {
      alert('called');
   };
   IWillBeCalledImmediately();
</script>

函数i将被中间调用()
{
警报(“被呼叫”);
};
我将被称为中间人();
但是,最好使用jquery和ready事件

<script type="text/javascript">
     $(function() { 
          alert('called');
      });
</script>

$(函数(){
警报(“被呼叫”);
});

我要做的是让Rails控制器生成javascript动作。就是让它调用包含javascript的部分

除非您希望在页面加载时激活它,否则我将通过AJAX进行设置。因此,我对控制器进行AJAX调用,然后控制器调用javascript文件

这可以通过投票看到:

首先是AJAX

//This instantiates a function you may use several times.

jQuery.fn.submitWithAjax = function() {
  this.live("click", function() {
    $.ajax({type: "GET", url: $(this).attr("href"), dataType: "script"});
    return false;
  });
};

// Here's an example of the class that will be 'clicked'
$(".vote").submitWithAjax();
第二个控制器

单击的类
$(“.vote”)
具有调用我的控制器的属性href

def vote_up
  respond_to do |format|
    # The action 'vote' is called here.
    format.js { render :action => "vote", :layout => false }
  end
end
现在控制器加载一个AJAX文件

// this file is called vote.js.haml
==  $("#post_#{@post.id}").replaceWith("#{ escape_javascript(render :partial => 'main/post_view', :locals => {:post_view => @post}) }");

您已经成功地从控制器调用了javascript函数。

ssri,我要做的是通过AJAX调用Rails控制器,然后该控制器激活调用javascript函数的部分。是否可以在vote.js.haml中调用函数?在进行函数调用时,如何传递变量?这是rails方法还是js方法?您可以从控制器向.js文件传递变量。因此,在我的示例中,@post在
def vote
的控制器操作中被描述为
@post
。。此设置的一个重要注意事项是,.vote的链接应该具有
remote:true
,以便调用js,而不是在单击时呈现新页面。
def vote_up
  respond_to do |format|
    # The action 'vote' is called here.
    format.js { render :action => "vote", :layout => false }
  end
end