使用find_all_by Ruby时出错

时间:2012-01-31 00:59:58

标签: ruby-on-rails html-table findall

我在ruby中遇到麻烦。我允许用户通过前缀或标题搜索类,以便将它们发送到found_by_prefix或found_by_title页面,我需要使用find_all_by_prefix(params[:prefix])。因此,当我这样做时,我收到了一个错误,所以我研究了它,发现使用<%=@course.map(&:prefix).join(', ')%>会将所有课程都放在我的表中,但它只将所有结果放在一行中。我只是想知道如何为4个结果制作4行!

控制器:

def found_by_prefix
      @course = Course.find_all_by_prefix(params[:prefix])
 end

查看:

    <table border=1>
<tr><th>id</th><th>prefix</th><th>number</th><th>title</th><th>section</th></tr>
<tr>
<td><%=@course.map(&:id)%></td>
<td><%=@course.map(&:prefix).join(', ')%></td>
<td><%=@course.map(&:number).join(', ')%></td>
<td><%=@course.map(&:title).join(', ')%></td>
<td><%=@course.map(&:section).join(', ')%></td>
</tr>
</table>

1 个答案:

答案 0 :(得分:0)

只需遍历结果,为每个结果创建一行:

<% @course.each do |course| %>
    <tr>
        <td><%= course.id %></td>
        <td><%= course.prefix %></td>
        <td><%= course.number %></td>
        <td><%= course.title %></td>
        <td><%= course.section %></td>
    </tr>
<% end %>

此外,您可能应该将实例变量命名为@courses而不是@course,因为它表示集合,而不是单个模型对象。