从jquery调用rails函数?

是不是可以调用rails函数或从jQuery中访问rails对象? 我想做的事情如下:

jQuery(document).ready(function($) { $('#mydiv').html(""); }); 

要么

 jQuery(document).ready(function($) { $('#mydiv').html(" "contacts" %>"); }); 

目前我将所有jQuery内容保存在我的application.js中,这包含在我的布局中。 哦是的….而且我没有使用Rails Edge。

问候,

塞巴斯蒂安

如果你想这样做,你必须在控制器中有一个方法来渲染你需要的东西。 另一种方法是使用视图块,就像在布局视图的末尾一样

  

并在视图中执行以下操作:

 <% content_for :footerjs do %> jQuery(document).ready(function($) { $('#mydiv').html('<%= escape_javascript(render :partial => "contacts") %>'); }); <% end %> 

您需要确保您将要呈现的部分不会包含可能导致javascript错误的字符(例如在字符串结尾之前完成引号等)。 此外,有些浏览器不喜欢多行字符串,所以你也必须摆弄它。

@changelog:你的答案很多。

通过在适当的javascript标记中包含<%= yield :myjs %> ,解决了该行下面描述的问题,如下所示:

  

再次感谢!!


我试着按照你说的方式实现它,但我遇到了一些困难:

我将以下content_for块放在show.html.erb的顶部:

 <% content_for :myjs do %> jQuery(document).ready(function($) { alert('hello'); }); <% end %> 

在我的layout.html中,我包括所有javascript如下(这里的applications.js实现了一些通用的jQuery函数):

  ... <%= javascript_include_tag 'jquery', 'application' %> <%= javascript_tag "var AUTH_TOKEN = #{form_authenticity_token.inspect};" if protect_against_forgery? %> <% yield :myjs %>   ... 

问题是当我调用它时,我的javascript没有显示在页面的源代码中。 此外,不会调用警报function。 当我输入<%= yield :myjs %>而不是(使用=)时,javascript会在我的body块的开头呈现,而不是head,但是当我打开页面时仍然不会调用alert函数。