首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >我怎么才能把这景色弄干?

我怎么才能把这景色弄干?
EN

Stack Overflow用户
提问于 2014-10-08 23:38:57
回答 1查看 74关注 0票数 0

我的观点有很多重复的逻辑。我不太知道怎么把它弄干。

有什么想法吗?

代码语言:javascript
运行
复制
      <li><a href="#">Great Grandparents</a>
        <ul>
          <li><% if relative.humanize == "Great grandfather" || relative.humanize == "Great grandmother" %>
            <%= link_to image_tag(membership.user.avatar.url, size: "48x48", :class => "img-circle") , family_tree_path(membership.user.family_tree) %>
                <%= link_to membership.user.name, family_tree_path(membership.user.family_tree)%>
              <% else %>
              None added yet, add them <%= link_to 'here', "#" , class: 'btn invite popupbox','data-popup' => 'invite_friend' %>
            <% end %>
          </li>
        </ul>
      </li>
      <li><a href="#">Grandparents</a>
        <ul>
          <li><% if relative.humanize == "Grandfather" || relative.humanize == "Grandmother" %>
            <%= link_to image_tag(membership.user.avatar.url, size: "48x48", :class => "img-circle") , family_tree_path(membership.user.family_tree) %>
                <%= link_to membership.user.name, family_tree_path(membership.user.family_tree)%>
              <% else %>
              None added yet, add them <%= link_to 'here', "#" , class: 'btn invite popupbox','data-popup' => 'invite_friend' %>
            <% end %>
          </li>
        </ul>
      </li>
      <li><a href="#">Parents</a>
        <ul>
            <li><% if relative.humanize == "Mom" || relative.humanize == "Dad" %>
            <%= link_to image_tag(membership.user.avatar.url, size: "48x48", :class => "img-circle") , family_tree_path(membership.user.family_tree) %>
                <%= link_to membership.user.name, family_tree_path(membership.user.family_tree)%>
              <% else %>
              None added yet, add them <%= link_to 'here', "#" , class: 'btn invite popupbox','data-popup' => 'invite_friend' %>
            <% end %>
          </li>
        </ul>

      </li>

注意:上面的已经被截断了,至少还有7条。有很多重复,但我不太清楚如何用铁路的方式把它弄干。

EN

回答 1

Stack Overflow用户

发布于 2014-10-09 03:27:14

在你看来:

代码语言:javascript
运行
复制
<% relatives_sections = [
  { section_name: 'Great grandparents', human_names: ['Great grandfather', 'Great grandmother']},
  { section_name: 'Grandparents', human_names: ['Grandfather', 'Grandmother']},
  { section_name: 'Parents', human_names: ['Mom', 'Dad']},
  ...
] %>

<% relatives_sections.each do |section| %>
<li><a href="#"><%= section[:section_name] %></a>
  <ul>
    <li>
      <% if section[:human_names].include?(relative.humanize) %>
        <%= link_to image_tag(membership.user.avatar.url, size: "48x48", :class => "img-circle") , family_tree_path(membership.user.family_tree) %>
        <%= link_to membership.user.name, family_tree_path(membership.user.family_tree)%>
      <% else %>
        None added yet, add them <%= link_to 'here', "#" , class: 'btn invite popupbox','data-popup' => 'invite_friend' %>
      <% end %>
    </li>
  </ul>
</li>
<% end %>

您还可能希望将整个<li>块移动到包含

代码语言:javascript
运行
复制
<li><a href="#"><%= section_name %></a>
  <ul>
    <li>
      <% if human_names.include?(relative.humanize) %>
        <%= link_to image_tag(user.avatar.url, size: "48x48", :class => "img-circle") , family_tree_path(user.family_tree) %>
        <%= link_to user.name, family_tree_path(user.family_tree)%>
      <% else %>
        None added yet, add them <%= link_to 'here', "#" , class: 'btn invite popupbox','data-popup' => 'invite_friend' %>
      <% end %>
    </li>
  </ul>
</li>

然后,在你看来:

代码语言:javascript
运行
复制
<% common_vars = {user: membership.user, relative:relative} %>
<% relatives_sections.each do |section| %>
  <%= render partial: 'relatives', locals: section.merge(common_vars) %>
<% end %>

作为最后一步,您可以考虑将relative_sections移动到一个助手中,并在可能的情况下在那里进一步使用DRYing。

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

https://stackoverflow.com/questions/26268115

复制
相关文章

相似问题

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