任何其他通过Chapter 11 Exercises for Michael Hartl's Rails Tutorial 2nd Edition工作的人
第11章,练习3问:通过为以下/followers页面、主页和用户展示页面常见的代码添加部分,重构清单11.31。
在主页、用户展示页面或show_follow页面中,我没有看到任何值得重构的东西
如果任何人想出了一些对这个练习有价值的东西,都会很乐意知道。
谢谢!
发布于 2012-08-25 04:27:01
您可以重构清单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>因为它在本质上与主页上使用的views\shared_user_info.html.erb部分相同(清单10.32)。因此,您可以用以下代码块替换上面的代码块:
<%= render 'shared/user_info' %> 注意,您还需要将<% @user ||= current_user %>添加到views\shared_user_info.html.erb partial的顶部(这与向清单11.20中的统计信息partial添加的内容相同)。
此外,在feed_item +提要部分和用户+微博部分之间有一些重复(但不是完全相同),根据显示的页面(follow_show、主页或个人资料),会列出一个或多个元素(名称、图片、管理员删除链接、微博内容、微博时间戳和微博删除链接)。这些可能也可以被重构,以消除feed_item+feed部分,并根据页面将它们替换为用户+微帖子部分的组合。
发布于 2014-08-23 05:12:24
我刚刚完成了这个练习,并找到了一个有效的解决方案。
首先,我更改了app/views/shared/_user_info.html.erb,如果设置了@user变量,则使用它,否则使用current_user变量。
app/views/shared/_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 %>然后,我用部分_user_info.html.erb替换了app/views/users/show_low.hmtl.erb中的相应信息
app/views/users/show_low.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. Hartl教程的人。
https://stackoverflow.com/questions/10254365
复制相似问题