Я новичок в рельсах, так что простите, если есть простой ответ. Я пытаюсь реализовать «Алфавитный указатель» для таблицы в рельсах. Я хочу иметь возможность щелкнуть букву и обновить таблицу, содержащую только данные, по которым первая буква столбца last_name
соответствует букве, по которой щелкнули.
Моей первой мыслью было создание массива букв из базы данных
@visitor_array = []
@v = Visitor.all
@v.each do |visitor|
@visitor_array << visitor.last_name[0,1]
end
@visitor_array.sort!
@visitor_array.uniq!
Этот код дает мне массив, который имеет одну из первых букв. Я использовал это как мой «алфавит». На мой взгляд у меня есть следующий код
<% @visitor_array.each do |visitor| %>
<%= link_to visitor, alphasort(visitor) %>
<% end %>
Смысл в том, чтобы при нажатии на букву запускать вспомогательную функцию. Но вот где я застрял.
UPDATE:
Хорошо, благодаря комментариям ниже, я смог понять это. Если кому-то еще было интересно, вот как это было сделано.
CONTROLLER
# Create array consisting of the first letter of every visitor's last name
@visitor_array = []
@v = Visitor.all
@v.each do |visitor|
@visitor_array << visitor.last_name[0,1]
end
#Sort array alphabetically in ASC order
@visitor_array.sort!
#Remove duplicate elements
@visitor_array.uniq!
if (params[:letter] != nil)
@visitors = Visitor.order("last_name ASC").where("last_name like ?", params[:letter] +"%" )
else
@visitors = Visitor.order("last_name ASC")
end
ВИД
<% @visitor_array.each do |letter| %>
<%= link_to letter, :controller => "visitors" , :letter => letter %>
<% end %>