代码之家  ›  专栏  ›  技术社区  ›  RubyRedGrapefruit

如何呈现UJ的部分?

  •  0
  • RubyRedGrapefruit  · 技术社区  · 14 年前

    我可以通过将函数绑定到超链接来呈现部分吗?

    我有一个超链接:

    查看所有图像

    我在application.js中看到了:

    $("#allimages").click(function() {
        $("#results").html("<%= escape_javascript(render 'images') %>");
    });
    

    我猜Ruby erb的东西永远不会这样执行。在javascript上下文中,“render”一词毫无意义。但是我不想仅仅为了显示另一个页面而对服务器进行完整的调用。有什么方法可以只使用javascript来显示部分内容吗?除了显示页面和调用可见的开/关?

    1 回复  |  直到 14 年前
        1
  •  3
  •   markquezada    14 年前

    我认为您混合了application.js(纯javascript)和从控制器返回erb处理的javascript(.js.erb)文件。

    你需要做这样的事情(未经测试):

    将单击处理程序设置为执行Ajax请求:

    $("#allimages").click(function() {
        $.get('something/image_results');
    });
    

    在你的 SomethingController :

    class SomethingController < ApplicationController
    
      respond_to :js, :only => [:image_results]
    
      def image_results
        @images = do_something
      end
    
    end
    

    (请确保为添加路由 image_results 在里面 routes.rb 也是。)

    然后在 image_results.js.erb 文件:

    $("#results").html("<%= escape_javascript(render 'images') %>");
    

    这里的关键点是,由于您现在在一个由erb处理的文件中,所以可以使用ruby。

    在没有另一个调用的情况下完成此操作的唯一方法是以某种方式单独呈现部分,并将其缓存为javascript或如您所说,在页面本身中,然后将其打开/关闭。