gpt4 book ai didi

ruby-on-rails - Rails 中的按字母顺序分页

转载 作者:行者123 更新时间:2023-12-04 07:29:20 25 4
gpt4 key购买 nike

我正在为按字母顺序分页的 Rails 搜索 gem。我希望我能在结果中找到一个首字母列表(我的意思是,如果没有以“a”开头的行,我不希望在分页链接上显示“a”)。这种 gem 已经存在了吗?

提前致谢!

最佳答案

这根本不难创建,例如,如果您有一个 find ,也许像:

@all_words = Word.select("words.word")

...它返回了一个结果集,例如一个单词列表,如下所示:
["alphabet", "boy", "day", "donkey", "ruby", "rails", "iPad"]    

...你可以这样做:
@all_words.collect {|word| word[0,1]}.uniq.sort

这将返回:
["a", "b", "d", "r", "i"]
.collect {|word| word[0,1]}将每个单词的第一个字母存储到一个新数组中,同时 uniq过滤掉唯一的字母和 sort按字母顺序对这些进行排序。

只需将其分配给一个变量,您就可以在 View 中使用它,如下所示:
<ul>
<% @first_letters.each do |letter| %>
<%= content_tag :li, link_to(letter, words_pagination_url(letter), :title => "Pagination by letter: #{letter}") %>
<% end %>
</ul>

如果传入参数,则您的 Controller 操作可以决定如何处理分页中的参数:
def index
if params[:letter]
@words = Word.by_letter(params[:letter])
else
@words = Word.all
end
end

然后模型中的范围看起来像:
scope :by_letter,
lambda { |letter| {
:conditions => ["words.word LIKE ?", "#{letter}%"]
}}

您的路线需要类似的东西:
match "words(/:letter)" => "words#index", :as => words_pagination

我还没有完全测试过这个,但它应该让你走上正确的道路。

关于ruby-on-rails - Rails 中的按字母顺序分页,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7589558/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com