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