0

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

我有一个超链接:

查看所有图片

我在 application.js 中有这个:

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

我猜 ruby​​ erb 的东西永远不会像那样执行。在 Javascript 的上下文中,“渲染”没有任何意义。但我不想为了显示另一个页面而对服务器进行完整调用。有没有办法只使用 Javascript 来显示部分内容?除了显示页面和调用可见的开/关吗?

4

1 回答 1

4

我认为您正在混合 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_resultsin添加一条路线routes.rb。)

然后在image_results.js.erb文件中:

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

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

在没有另一个调用的情况下做到这一点的唯一方法是以某种方式单独呈现部分并将其缓存为 javascript 或像您所说的那样,在页面本身中,然后将其打开/关闭。

于 2010-11-22T19:50:12.963 回答