Rails:一个简单的远程:真正的调用不会生成js响应

时间:2014-06-15 01:05:23

标签: javascript jquery html ruby-on-rails iframe

我正在使用iframe在我的rails应用中显示托管在同一域中的一些静态html文件。我正在向iframe中的元素添加一个带有remote属性的链接,希望进行就地ajax调用来创建一个新的嵌套资源,如下所示:

----project.js----
var f = $( ".myFrame" );
f.load(function(){
        $(this).find('.jd-details-title').append('<a data-remote="true" href="/projects/10/issues/new" id="new_link">New Issue</a>');
});
----javadocs.html.erb----
<iframe width="100%"
                  height="1200"
                  frameborder="0"
                  scrolling="auto"
                  class='myFrame'
                  src= <%= /path/to/static/htmls/ %> >
          </iframe>

当我点击iframe中的此链接时,iframe会重定向到新的问题html页面,但当它移出iframe时,它会神奇地调用新问题的js版本。

我在这里缺少什么?如何修改此代码以获得相同的行为?

1 个答案:

答案 0 :(得分:1)

remote: true由Rails上名为jquery_ujs的javascript库控制(您可以在application.js中看到它)。由于您的iframe页面不包含此库,因此无法理解remote: true(请记住,iframe中的页面与父页面完全隔离)。

在这种情况下,我认为您必须手动处理iframe中的链接。例如:

$("link_id_inside_iframe").click(function(e){
   e.preventDefault();
   var link = $(this).attr("href");
   $.getScript(link);
});