Ruby on rails-用于从用户获取的输入的表格形式

时间:2014-10-08 01:57:16

标签: ruby-on-rails

我想以表格形式打印用户提供的条目。该表将包含3列名称,注册号和参加的类,但输出不符合预期。它首先打印所有名称,然后是所有注册号等。我想根据参加的名称和班级打印姓名和注册号码。

</head><table width="100%">
<tr>
<th>NAME</th>
<th>REGISTRATION NUMBER</th>
<th>CLASSES ATTENDED</th>
</tr>
<tr>
<% @name_students.each do |t| %>
<th><%= t.name_student %></th><br>
<% end %>
<% @reg_nos.each do |t| %>
<th><%= t.reg_no %></th><br>
<% end %>
<% @classes_ats.each do |t| %>
<th><%= t.classes_at %></th><br>
<% end %>
</tr>
</table>

这是我的控制器动作。

class PagesController < ApplicationController
def home
@name_students = Page.all
@reg_nos = Page.all
@classes_ats = Page.all
end
def list
@name_students = Page.all
@reg_nos = Page.all
@classes_ats = Page.all
end
def add
Page.create(:name_student => params[:nam])
Page.create(:reg_no => params[:reg])
Page.create(:classes_at => params[:cls])
redirect_to :action => 'home'
end
end

1 个答案:

答案 0 :(得分:0)

如果我了解您正在做什么,您应该PagesController#home返回类似@pages = Page.all对象的内容,并显示如下数据:

<thead>
  <tr>
    <th>Name</th>
    <th>Registration Number</th>
    <th>Classes Attended</th>
  </tr>
</thead>

<tbody>
  <% @pages.each do |p| %>
    <tr>
      <td><%= p.name %></td>
      <td><%= p.registration_number %></td>
      <td><%= classes_attended(p.classes_attended) %></td>
    </tr>
  <% end %>
</tbody>

上面,classes_attended(p)是对辅助方法的调用,您可以使用该方法将学生所参加的类的类名映射到可显示的数组中。实际上,这种显示逻辑在装饰器中可能更好,但是辅助方法现在应该没问题。

如果我完全误解了您正在做的事情,请告诉我,我会删除我的答案。

编辑添加:

示例索引方法:

def home
  @pages = Page.all
end

此外,再次查看您的问题,您是否有理由创建三个Page个对象,每个对象只有一个属性,而不是一个具有所有三个属性的Page对象?它应该看起来像Page.create(:name_student => params[:nam], :reg_no => params[:reg], :classes_at => params[:cls])。这几乎是我发布的解决方案的唯一方式。尽管如此,我可能完全误解了你的目标。