Ruby on rails 链接到显示内容的随机页面

Ruby on rails 链接到显示内容的随机页面,ruby-on-rails,ruby,ruby-on-rails-4,view,controller,Ruby On Rails,Ruby,Ruby On Rails 4,View,Controller,我使用的是Rails 4 我有两个资源:文章和子文章子节嵌套在文章中 我现在有一个随机按钮,它可以让用户看到一篇随机文章。然而,我希望它只把他们带到一个有子篇的文章页面 最好的办法是什么?我找不到文件 以下是我在文章(u controller)中的随机方法: @items = Article.all @randitem = @items[rand(@items.count)] 并且认为: <%= link_to "Random Page", article_path(@randitem)

我使用的是Rails 4

我有两个资源:
文章
子文章
<代码>子节嵌套在
文章

我现在有一个随机按钮,它可以让用户看到一篇随机文章。然而,我希望它只把他们带到一个有
子篇
的文章页面

最好的办法是什么?我找不到文件

以下是我在文章(u controller)中的随机方法:

@items = Article.all
@randitem = @items[rand(@items.count)]
并且认为:

<%= link_to "Random Page", article_path(@randitem) %>

您是否设置了
计数器\u缓存
?如果没有,我建议您这样做,因为它将允许您以更优雅的方式(使用更少的代码和更少的数据库查询)完成您想要的工作:

顺便说一句,使用Ruby
sample
方法从集合中获取随机项更为简洁:

class ArticlesController < ApplicationController
  def index
    @items = Article.includes(:subarticles).where('subarticles_count > 0')
    @randitem = @items.sample
  end
end
class-ArticlesController0')
@randitem=@items.sample
结束
结束

非常感谢您的帮助。我设置了计数器缓存,但收到了此错误<代码>SQLite3::SQLException:没有这样的列:子节数:选择“文章”。*从“文章”中(子节数>0)您是否创建了迁移以使字段<代码>子节数?我快到了。在视图中我将使用什么?当我尝试使用我当前的链接时,我得到了这个错误
没有路由匹配{:action=>“show”,:controller=>“articles”,:id=>nil}缺少必需的键:[:id]
。\u tommm…这很奇怪。是否定义了
@randeItem
并具有id?另外,请用一些新的代码片段更新你的帖子,这样我也许可以看看是否有任何错误最终让它工作起来。必须将计数默认为零,然后在迁移中使用正确的计数进行更新。再次感谢你。
class ArticlesController < ApplicationController
  def index
    @items = Article.includes(:subarticles).where('subarticles_count > 0')
    @randitem = @items[rand(@items.count)]
  end
end
class ArticlesController < ApplicationController
  def index
    @items = Article.includes(:subarticles).where('subarticles_count > 0')
    @randitem = @items.sample
  end
end