快速业务通道

真实世界中的Rails,第2部分: 高级页面缓存 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-14
对于 show-and-tell,我特别更改了页面的元素以符 合单个用户的情况。

首先,完成在这两个 partial (即登出用户和登录用户)上呈现的静态内容 。我假设用户已经登出,所以我会通过附加 display: none 风格隐藏 logged_in div。之后,如果必要 ,我就可以用 JavaScript 显示或隐藏它们。请注意,我使用了相同的两个名称:logged_in 和 logged_out,来识别每个 div,这样便无需对我为这个主页所编写的 JavaScript 进行修改:

清 单 6. 呈现登录和登出这两个 partial

<div class="boxRight 

sideColumnColor">
  <div id=''logged_in''>
    <%= render :partial => ''common/logged_in'' style="display: none; 

%>
  </div>
  <div id=''logged_out''>
    <%= render :partial => ''common/logged_out'' %>
  </div>
</div>

真实世界中的Rails,第2部分: 高级页面缓存(7)

时间:2011-11-20 Bruce Tate

接下来,完成 logged_in partial 的内容。注意,每个包含动态内容的 HTML 组 件都有一个 ID,从而我可以使用 JavaScript 找到它并随后将其替换:

清单 7. 显示 logged_in partial

<div id=''logged_in'' style="display: none;">
 <%= link_to %(<span class="mainBodyDark">Hi, </span>) +
    %(<span class="textLarge mainBodyDark"><b 

id=''bold_link''>) + "my_login" +
    %(</b></span>), {:controller => ''profiles'', :action => 

''show'', :id => ''my_login''},
{:id => ''profile_link''} %>
 <br/>
 <div id=''picture_and_link''>
   <a href="http://member/my_login" 

id=''link_for_member_thumbnail''>
     <img id=''member_thumbnail''
        alt="Def_member_thumbnail"
        src="/images/default/def_member_thumbnail.gif" /></a>
 </div>
 <div id="not_mine">Not my_login?</div>
 <br/>
 <%= image_button "logout", :controller => "members", :action 

=> "logout" %>

如果对 Rails 有足够的了解,您可能会注意到其中的几个定 制帮助程序函数。从中可以看到四处很明显的动态内容,我需要使用 JavaScript 为每个加载的页面替换 这些内容:三处登录,一处会员图像。此处的 JavaScript 代码对 handle_cached_user 函数作了一处修 改,并且还含有一个为动态用户处理页面更新的方法。针对本文的具体情况,我稍微对这段代码做了少许 简化。可以将如下函数添加到 application.js 文件中:

清单 8. 替换用户 partial 的元素

function handle_user_partial() {
  var login_cookie = readCookie(''login'');
  var image_cookie = readCookie(''image'');
  var profileLink = document.getElementById(''profile_link'');
  profileLink.href = ''/member/'' + login_cookie;
  document.getElementById(''bold_link'').firstChild.nodeValue=login_cookie;
  document.getElementById(''not_mine'').firstChild.nodeValue="Not " + 

login_cookie + "?";
  document.getElementById(''link_for_member_thumbnail'').href="/member/" + 

login_cookie;
  document.getElementById(''member_thumbnail'').src=image_cookie.replac

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号