Ищете способ алфавитного отображения таблицы в Rails? - PullRequest
0 голосов
/ 30 августа 2011

У меня есть две модели, Персонаж и Навыки.Я ищу способ автоматической сортировки всех навыков по 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 голосов
/ 30 августа 2011

Вы можете взять набор умений и просто сделать .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 для класса Array

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...