使用javascript在rails中呈现html.erb

时间:2012-03-08 12:26:05

标签: javascript ruby-on-rails

我创建了一个页面,其中一些部分是渲染的布局文件。但是我想用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>

因为在某些执行后对“文件夹”进行了一些更改,我想再次渲染此部分以查看更新。

3 个答案:

答案 0 :(得分:0)

你不应该尝试使用javascript 渲染 erb - 它不是如何完成的(更不用说你必须自己写一个erb解析器并最终调用服务器获取数据)。

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

观看此http://railscasts.com/episodes/205-unobtrusive-javascript, 阅读此Rails 3 and RJS以了解如何通过javascript触发某些内容更新。

总体思路是

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

答案 1 :(得分:0)

可以在服务器和客户端之间共享模板。允许此操作的一个库称为mustache

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

答案 2 :(得分:0)

而不是渲染我做了AJAX方式并在页面上更新它。谢谢你的答案,但我没有使用任何这些。