首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >重构-第11章,练习3 Rails教程第二版

重构-第11章,练习3 Rails教程第二版
EN

Stack Overflow用户
提问于 2012-04-21 06:28:43
回答 2查看 601关注 0票数 4

任何其他通过Chapter 11 Exercises for Michael Hartl's Rails Tutorial 2nd Edition工作的人

第11章,练习3问:通过为以下/followers页面、主页和用户展示页面常见的代码添加部分,重构清单11.31。

在主页、用户展示页面或show_follow页面中,我没有看到任何值得重构的东西

如果任何人想出了一些对这个练习有价值的东西,都会很乐意知道。

谢谢!

EN

回答 2

Stack Overflow用户

发布于 2012-08-25 04:27:01

您可以重构清单11.31中的第一段代码:

代码语言:javascript
运行
复制
<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)。因此,您可以用以下代码块替换上面的代码块:

代码语言:javascript
运行
复制
<%= render 'shared/user_info' %> 

注意,您还需要将<% @user ||= current_user %>添加到views\shared_user_info.html.erb partial的顶部(这与向清单11.20中的统计信息partial添加的内容相同)。

此外,在feed_item +提要部分和用户+微博部分之间有一些重复(但不是完全相同),根据显示的页面(follow_show、主页或个人资料),会列出一个或多个元素(名称、图片、管理员删除链接、微博内容、微博时间戳和微博删除链接)。这些可能也可以被重构,以消除feed_item+feed部分,并根据页面将它们替换为用户+微帖子部分的组合。

票数 2
EN

Stack Overflow用户

发布于 2014-08-23 05:12:24

我刚刚完成了这个练习,并找到了一个有效的解决方案。

首先,我更改了app/views/shared/_user_info.html.erb,如果设置了@user变量,则使用它,否则使用current_user变量。

app/views/shared/_user_info.html.erb:

代码语言:javascript
运行
复制
<% 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:

代码语言:javascript
运行
复制
<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教程的人。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10254365

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档