我是rails新手,如果有一个简单的答案,请原谅我。我正在尝试为 rails 中的表格实现“字母索引”。我希望能够单击一个字母并刷新表格 - 仅包含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 %>
这里的想法是在单击字母时运行一个辅助函数。但这是我卡住的地方。
更新:
好的,感谢下面的评论,我能够弄清楚。如果其他人想知道,这就是它的完成方式。
控制器
# 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 %>