我想以表格形式打印用户提供的条目。该表将包含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
答案 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])
。这几乎是我发布的解决方案的唯一方式。尽管如此,我可能完全误解了你的目标。