0

专家

说,我想以一种在线图书结构呈现页面:

Table of contents:
[link here]1. How it all began
[link here]2. Where did it go
...

1. How it all began
    Text of chapter 1
    ...
2. Where did it go
    Text of chapter 2
    ...
...

所以通常使用 erb 我会执行以下 ruby​​ 代码:

<h2>Table of contents:</h2>
<% chapters.each_with_index do |chapter, n| %>
   <a href="#c_<%= n %>"><%= n %>. <%= chapter.title %></a>
<% end %>
<hr/>

<% chapters.each_with_index do |chapter, n| %>
    <h2 id="c_<%= n %>"><%= n %>. <%= chapter.title %></h2>
    <p>
    <%= chapter.text %>
    </p>
<% end %>

但是,我在这里做了两个相同的循环,因为我必须同时在页面的两个不同部分插入 ruby​​ 代码。也许有一种方法可以只做一个循环?

4

1 回答 1

0

正如其他人所说,你所拥有的没有任何问题。这是一种仅使用一个循环的非常简单的方法:

<% toc, body = '', '' %>
<% @chapters.each_with_index do |chapter, n| %>
  <% toc << %Q{
    <a href="#c_#{n}">#{n}. #{chapter.title}</a>
  } %>
  <% body << %Q{
    <h2 id="c_#{n}">#{n}. #{chapter.title}</h2>
    <p>#{chapter.text}</p>
  } %>  
<% end %>
<%= raw toc %>
<hr/>
<%= raw body %>

你会想要确保你想要逃脱的所有东西都被逃脱了。您可能还希望将其移至助手中。

于 2013-09-06T22:28:09.970 回答