首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从UJS渲染部分?

如何从UJS渲染部分?
EN

Stack Overflow用户
提问于 2010-11-23 01:28:19
回答 1查看 966关注 0票数 0

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

我有一个超链接:

查看所有图像

我在application.js中有这样的代码:

代码语言:javascript
复制
$("#allimages").click(function() {
    $("#results").html("<%= escape_javascript(render 'images') %>");
});

我猜ruby erb的东西从来没有像那样执行过。而“呈现”在Javascript的上下文中没有任何意义。但我不想仅仅为了显示另一个页面而对服务器进行完整的调用。有什么方法可以只使用Javascript来显示部分内容吗?除了显示页面和调用visible on/off?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-11-23 03:50:13

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

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

将click处理程序设置为执行ajax请求:

代码语言:javascript
复制
$("#allimages").click(function() {
    $.get('something/image_results');
});

在你的SomethingController

代码语言:javascript
复制
class SomethingController < ApplicationController

  respond_to :js, :only => [:image_results]

  def image_results
    @images = do_something
  end

end

(请确保也在routes.rb中添加image_results的路由。)

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

代码语言:javascript
复制
$("#results").html("<%= escape_javascript(render 'images') %>");

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

唯一不需要另一个调用的方法是以某种方式单独呈现部分,并将其缓存为javascript或如您所说的那样缓存到页面本身,然后打开/关闭它。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4248273

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档