我想按字母顺序在答案旁边写一个字母。
像这样:
a. answer one
b. answer two
c. answer three
依旧......
这就是我的尝试,但如果有答案,我无法弄清楚如何只写这封信。
<% @a = ("a".."z").to_a %>
<% question.answers.each do |answer| %>
<tr>
<% if answer %>
<% @a.each do |letter| %>
<td><% letter %></td>
<% end %>
<% end %>
<td><%= answer.option %></td>
</tr>
<% end %>
答案 0 :(得分:3)
您应该考虑使用内置的html listing functionality:
<ol style="list-style-type: lower-alpha">
<li>Coffee</li>
<li>Tea</li>
<li>Milk</li>
</ol>
将显示为:
a. Coffee
b. Tea
c. Milk
答案 1 :(得分:2)
您可以使用each_with_index
,它还会将数组中当前对象的索引传递给块。这意味着第一个答案将包含i == 0
,第二个答案将包含i == 1
等。
@a
也是一个数组,其中包含字母,因此在0
位置有字母"a"
,1
- "b"
,等
现在你要做的就是在位置i
的答案前打印位置i
的字母:
<% @a = ("a".."z").to_a %>
<% question.answers.each_with_index do |answer, i| %>
<tr>
<% if answer %>
<td><%= @a[i] %></td>
<% end %>
<td><%= answer.option %></td>
</tr>
<% end %>
顺便说一下,if
是多余的,或者您必须将answer.option
放入其中 - 否则您将尝试在.option
上致电nil
...
<% @a = ("a".."z").to_a %>
<% question.answers.each_with_index do |answer, i| %>
<tr>
<% if answer %>
<td><%= @a[i] %></td>
<td><%= answer.option %></td>
<% end %>
</tr>
<% end %>