任何人通过Chapter 11 Exercises for Michael Hartl's Rails Tutorial 2nd Edition工作?重构 - 第11章,练习3 Rails的教程第2版
第11章练习3问: 重构列表11.31通过为以下/关注者页面,主页面和用户显示页面添加通用代码的部分内容。
,我没有看到任何值得重构的网页,用户展示页面,或show_follow页面
如果有人想出了一些有意义的事情为这项工作,很想知道。
谢谢!
任何人通过Chapter 11 Exercises for Michael Hartl's Rails Tutorial 2nd Edition工作?重构 - 第11章,练习3 Rails的教程第2版
第11章练习3问: 重构列表11.31通过为以下/关注者页面,主页面和用户显示页面添加通用代码的部分内容。
,我没有看到任何值得重构的网页,用户展示页面,或show_follow页面
如果有人想出了一些有意义的事情为这项工作,很想知道。
谢谢!
您可以从清单11.31重构的一个代码块:
<section>
<%= gravatar_for @user %>
<h1><%= @user.name %></h1>
<span><%= link_to "view my profile", @user %></span>
<span><b>Microposts:</b> <%= @user.microposts.count %></span>
</section>
,因为它本质上是相同的看法\ shared_user_info.html.erb部分的主页上使用的(清单10.32)。因此,你可以替换上面这个代码块:
<%= render 'shared/user_info' %>
请注意,您还需要添加<% @user ||= current_user %>
到的意见顶部\ shared_user_info.html.erb部分(这是一样的是什么在清单11.20部分需要添加到统计数据中)。
此外,feed_item + feed部分与用户+ micropost部分之间有一些重复(尽管不完全重复),其中取决于显示哪个页面(follow_show,home或profile),有一个或多个列出的元素(名称,gravatar,管理员删除链接,微博内容,微博时间戳和微博删除链接)。这些可能也会被重构,以消除feed_item + feed部分,并根据页面将它们替换为用户+微博部分的组合。
我只是通过这个练习的工作,发现一个可行的解决方案。
首先我周围应用/视图/共享/ _user_info.html.erb改变,如果它被设置为使用@user变量,CURRENT_USER可变否则。
应用/视图/共享/ _user_info.html.erb:
<% if @user %>
<%= link_to gravatar_for(@user, size: 52), @user %>
<h1>
<%= @user.name %>
</h1>
<span>
<%= link_to "view my profile", @user %>
</span>
<span>
<%= pluralize(@user.microposts.count, "micropost") %>
</span>
<% else %>
<%= link_to gravatar_for(current_user, size: 52), current_user %>
<h1>
<%= current_user.name %>
</h1>
<span>
<%= link_to "view my profile", current_user %>
</span>
<span>
<%= pluralize(current_user.microposts.count, "micropost") %>
</span>
<% end %>
然后我替换应用程序/视图/用户/ show_follow.hmtl.erb相应的信息与部分_user_info.html.erb
应用程序/视图/用户/ show_follow.hmtl.erb:
<div class="row">
<aside class="span4">
<section>
<%= render 'shared/user_info' %>
</section>
<section>
<%= render 'shared/stats' %>
<% if @users.any? %>
<div class="user_avatars">
<% @users.each do |user| %>
<%= link_to gravatar_for(user, size: 30), user %>
<% end %>
</div>
<% end %>
</section>
</aside>
<div class="span8">
<h3><%= @title %></h3>
<% if @users.any? %>
<ul class="users">
<%= render @users %>
</ul>
<%= will_paginate %>
<% end %>
</div>
</div>
我希望这个答案可以帮助任何人通过M.哈特尔的教程去。
我找不到公共代码要么在这些网页重构。也许这个问题是从先前版本的教程中得到的,其中没有那么多的重构代码(?)。如果你正在寻找方法,以使代码更紧凑,我可以建议使用Haml的重新写你的观点,也许走的是静态内容从家庭,接触,了解和帮助页面,并且把它们放在降价文件你可以渲染。 – 2012-06-24 14:10:02