从控制器调用javascript函数

时间:2011-02-16 13:37:20

标签: javascript ruby-on-rails

是否可以从rails中的控制器调用javascript函数?

2 个答案:

答案 0 :(得分:13)

我所做的是让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函数。

答案 1 :(得分:0)

不,但你可以输出在视图中立即调用的javascript,例如。

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

然而,使用jquery并使用ready事件可能会更好。

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