我正在使用开源学校管理软件Fedena,我正在尝试按姓氏对用户列表进行排序。该软件目前向所有用户显示其名字。我发现这两个文件负责显示我打算更改的信息。
student_controller.rb
def list_students_by_course
@students = Student.find_all_by_batch_id(params[:batch_id], :order => 'last_name ASC')
render(:update) { |page| page.replace_html 'students', :partial => 'students_by_course' }
end
当我删除文件的上述部分时,用户名称不会显示,因此我相信此部分负责使用用户名填充表格。
_students_by_course.erb
<div class="students-table">
<table align="center" width="100%" cellpadding="1" cellspacing="1">
<tr class="tr-head">
<td><%= t('sl_no') %></td>
<td><%= t('name') %></td>
<td><%= t('adm_no') %></td>
<td></td>
</tr>
<tr>
<td></td>
<td></td>
<td></td>
<td></td>
</tr>
<% @students.each_with_index do |r, i| %>
<tr class="tr-<%= cycle('odd', 'even') %>">
<td class="col-1">
<%= i+1 %>
</td>
<td class="col-2">
<%= link_to r.full_name,:controller => "student", :action => "profile", :id => r.id %>
</td>
<td class="col-1">
<%= r.admission_no %>
</td>
<td class="col-7">
<%= link_to "#{t('view_profile')}", :controller => "student", :action => "profile", :id => r.id %>
</td>
</tr>
<% end %>
</table>
</div>
我尝试过更改&#39; last_name ASC&#39; to&#39; last_name DESC&#39;但没有改变。 任何帮助表示赞赏。
答案 0 :(得分:1)
您在评论中澄清了您不想排序顺序(我认为你已经明白了吗?)但是全名的格式 显示模型Student
的每个实例。
如果追溯到源头并不难。让我们从一个观点开始,因为那是我们所看到的。
@students.each_with_index do |r, i|
我们启动一个循环,每次循环都处理一个索引为r
的条目i
。由于我们在Student
的集合上循环(似乎是一个有效的假设),r
是Student
的一个实例。有问题的一行是:
<%= link_to r.full_name,:controller => "student", :action => "profile", :id => r.id %>
实际上,我们应该只看r.full_name
,因为我们得到的是链接标签。它是Student
的方法。 Here it is
def full_name
"#{first_name} #{middle_name} #{last_name}"
end
你可能想知道第二个空间在哪里,因为这样的实现暗示如果middle_name
不存在,我们就有两个。查看页面的来源,您会发现实际上有两个!因此,为了更改全名的外观,您必须修改此方法。