用javascript在rails中呈现一个html.erb

rendering a html.erb in rails with javascript

本文关键字:一个 erb html javascript rails      更新时间:2023-09-26

我创建了一个页面,其中的一些部分是渲染的布局文件。然而,我想用javascript代码再次渲染其中一个渲染部分。

我想再次渲染这些部分

<div id="dialog" title="Bookmark Folders" style="resize: both;">
        <%=render "layouts/filetree.html.erb"%>
</div>

它的渲染功能创建如下:

<div id="accordion">
    <% @user.folders.each do |f| %> <h3 id="<%= f.folder_name%>" class="folderBar"><a href="#" class="folderName"><b id="folderName"><%= f.folder_name%></b> created <%=distance_of_time_in_words(f.created_at, Time.now)%> before</a></h3>
    <div class="<%= f.folder_name.delete(" ")%>">
        <%if f.docs.empty?%>
        <b>-No document currently!-</b>
        <%else%>
        <% f.docs.each do |r|%>
        <a href="<%=r.url%>" style = "color:#0066CC;"><%= r.title%></a><br/>
        <b><%=r.url%></b><br /> 
        <%= r.snippet%><hr/>
        <%end%>
        <%end%>
    </div>
    <%end%>
</div>

因为在一些执行之后,"文件夹"发生了一些更改,我想再次渲染这一部分以查看更新。

您不应该试图用javascript来渲染erb——这不是怎么做的(更不用说您必须为自己编写一个erb解析器,并最终调用服务器获取数据)。

另一方面,如果您询问如何使用Javasript发布某个模板的渲染,然后用新内容替换旧内容,那么。。。

看这个http://railscasts.com/episodes/205-unobtrusive-javascript,阅读Rails3和RJS,了解如何通过javascript触发一些内容更新。

总体思路是

  1. 渲染初始整页
  2. 触发ajax调用(一段时间后或通过手动用户请求)以向rails应用程序发出请求
  3. 处理该请求并使用javascript脚本进行响应(脚本内容应包含所有功能和内容以替换您想要的内容)

可以在服务器和客户端之间共享模板。其中一个允许这样做的库被称为"胡子"。

但如果这是你唯一需要的情况,我也会选择RJS方法。

我不是用AJAX的方式进行渲染,而是在页面上进行更新。谢谢你的回答,但我没有用这些。