链接到标题部分(rails)中的随机记录

时间:2013-09-07 06:21:34

标签: ruby-on-rails postgresql random record

我想知道如何在我的rails应用程序的标题部分中创建一个链接到随机记录的“shuffle”按钮。我有一个“引脚”表,每个引脚都是一个视频。

我搜索了stackoverflow并且无法弄清楚如何做到这一点.. 我认为它与标题部分有关,不适用于Pins控制器/模型。

当有人点击按钮时,它应链接到以下内容:

website.com/pins/13

任何帮助都会非常感谢!

编辑: 这是我之前尝试过的代码:

offset = rand(Model.count) rand_record = Model.first(:offset => offset)

但我是铁杆新手,我不知道该把它放在哪里。我尝试将它放在模型和控制器中,两者都不起作用。

1 个答案:

答案 0 :(得分:1)

好的,所以我假设您想要在每次用户加载特定页面时显示随机模型的链接。让我们说显示此链接的页面是ModelController#index action。

由于随机化仅在最初加载页面时发生,因此您可以在控制器操作中执行此操作:

class ModelController < ActionController::Base
  #other actions

  def index
    #any other index code
    @random_model = Model.order('random()').first
  end
end

现在,在您看来,您可以通常的方式链接到该模型:

<%= link_to("Shuffle", @random_model, :class => "btn btn-small btn-warning") %>

每次执行控制器操作时,它都会随机选择一个模型,并在呈现页面时包含指向该模型的链接。

编辑地址: &#34;无论如何在没有将代码放入索引并显示操作的情况下使其工作?&#34;

是。您实际上可以在视图代码中加载模型。通常,将它分配给控制器中的实例变量是更正确的&#39;方法,但正如您所指出的,它会导致代码重复。如果您希望将其包含在多个视图中,我建议将其视为部分视图。像这样:

<强>视图/共享/ _shuffle.erb:

<%= link_to("Shuffle", Model.order('random()').first, :class => "btn btn-small btn-warning") %>

然后在任何要包含随机链接的页面中呈现该部分:

<%= render 'shared/shuffle' %>

请注意,如果您在页面中多次渲染此部分,则每个链接的随机模型将有所不同。