我认为您正在混合 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 或像您所说的那样,在页面本身中,然后将其打开/关闭。