想找到一种在Rails中按字母顺序显示表格的方法吗?

时间:2011-08-29 23:47:01

标签: ruby-on-rails view controller indexing

我有两个模特,角色和技能。我正在寻找一种方法,通过视图中的skill.name自动排序所有技能。

以下是我认为的一些代码:

<h2><%= @character.name %>'s Skills</h2>

<% @character.skills.reject {|skill| skill.new_record? }.each do |skill| %>
<b><%= skill.name %></b><br /><br />
...
<%= skill.ranks %><br />
<%= link_to 'Edit', edit_character_skill_path(@character, skill) %>  
<br /><br />
<% end %>

这是我控制器的代码:

def index
@character = Character.find(params[:character_id])
@skill = @character.skills.build
@skills = @character.skills.find(:all, :order => 'name')
end

我不确定最后一点是否会真正起作用,如果它能够正常工作,我不确定如何在视图中调用它。有什么输入?此外,这将按字母顺序排列新的技能实例,对吧?在,我有技能A和技能D,然后添加技能B,它会显示为A,B,D?谢谢!

1 个答案:

答案 0 :(得分:0)

您可以掌握一系列技能,然后执行.sort

所以,如果你有一个角色,@character.skills是:

@character.skills
=> ["Archery", "Magic", "Sneak", "Combat", "Healing", "Repair", "Fishing"]

你可以这样做:

@sorted_skills = @character.skills.sort
=> ["Archery", "Combat", "Fishing", "Healing", "Magic", "Repair", "Sneak"]

这样做会将sorted_skills设置为自然排序的技能数组,但不会改变@character.skills的原始顺序。但是,如果您改为调用@character.skills.sort!(请注意!),它将排序并永久更改@ character.skills中数组的顺序(至少在该变量超出范围之前)。 .sort!不会以任何方式改变数据库中的模型或数据。

你也可以.sort任何数组,比如整数,Ruby会以智能的方式对它们进行排序。除此之外还有更多,但听起来这应该可以满足您的需求。

Ruby documentation for Array class