我正在使用Rails 4.
我有两个资源:articles
和subarticles
。 subarticles
嵌套在articles
中。
我目前有一个随机按钮,可以将用户带到随机文章中。但是,我希望它只能将它们带到subarticle
所在的文章页面。
最好的方法是什么?我在查找文档方面遇到了困难。
这是articles_controller中的随机方法:
@items = Article.all
@randitem = @items[rand(@items.count)]
并在视图中:
<%= link_to "Random Page", article_path(@randitem) %>
答案 0 :(得分:1)
您是否设置了counter_cache
?如果没有,我建议你这样做,因为它可以让你以更优雅的方式做你想做的事情(代码更少,数据库查询更少):http://guides.rubyonrails.org/association_basics.html
class Article < ActiveRecord::Base
# The article table needs then to have a `subarticles_count` field
has_many :subarticles
end
class Subarticle < ActiveRecord::Base
belongs_to :article, counter_cache: true
end
然后在您的控制器中,您可以查询articles
的{{1}}:
subarticles
顺便说一句,使用Ruby class ArticlesController < ApplicationController
def index
@items = Article.includes(:subarticles).where('subarticles_count > 0')
@randitem = @items[rand(@items.count)]
end
end
方法从集合中获取随机项更清晰:
sample