还有其他人正在完成Michael Hartl 的 Rails 教程第 2 版的第 11 章练习吗?
第 11 章,练习 3 要求:重构代码清单 11.31,为以下/关注页面、主页和用户显示页面的通用代码添加部分代码。
我在主页、用户展示页面或 show_follow 页面中没有看到任何值得重构的内容
如果有人想出一些对这个练习有价值的东西,很想知道。
谢谢!
还有其他人正在完成Michael Hartl 的 Rails 教程第 2 版的第 11 章练习吗?
第 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>
因为它本质上与主页上使用的 views\shared_user_info.html.erb 部分相同(清单 10.32)。因此,您可以将上面的代码块替换为:
<%= render 'shared/user_info' %>
请注意,您还需要添加<% @user ||= current_user %>
到 views\shared_user_info.html.erb 部分的顶部(这与在清单 11.20 中添加到 stats 部分所必需的相同)。
此外,feed_item + feed 部分与用户 + micropost 部分之间存在一些重复(尽管不是完全重复),其中根据显示的页面(follow_show、home 或 profile)列出一个或多个元素(姓名、头像、管理员删除链接、微博内容、微博时间戳、微博删除链接)。这些也可能会被重构,以消除 feed_item+feed 部分,并根据页面将它们替换为用户 + micropost 部分的组合。
我刚刚完成了这个练习,并找到了一个可行的解决方案。
首先,我更改了 app/views/shared/_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 %>
然后我将 app/views/users/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. Hartl 的教程。