链接到内容存在的随机页面

时间:2015-07-01 00:01:51

标签: ruby-on-rails ruby ruby-on-rails-4 view controller

我正在使用Rails 4.

我有两个资源:articlessubarticlessubarticles嵌套在articles中。

我目前有一个随机按钮,可以将用户带到随机文章中。但是,我希望它只能将它们带到subarticle所在的文章页面。

最好的方法是什么?我在查找文档方面遇到了困难。

这是articles_controller中的随机方法:

@items = Article.all
@randitem = @items[rand(@items.count)]

并在视图中:

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

1 个答案:

答案 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