0

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

我已经通过 stackoverflow 进行了搜索,但不知道该怎么做。我认为这与标题部分有关,不适用于 Pins 控制器/模型。

当有人点击按钮时,它应该链接到这样的东西:

website.com/pins/13

任何帮助都会非常感谢!

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

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

但我是 Rails 新手,不知道该放在哪里。我尝试将其放入模型和控制器中,但均无效。

4

1 回答 1

1

好的,所以我假设您希望每次用户加载特定页面时都显示一个随机模型的链接。假设显示此链接的页面是 ModelController#index 操作。

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

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") %>

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

编辑地址: “有没有办法让它工作而不将代码放入索引并显示操作?”

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

意见/共享/_shuffle.erb:

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

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

<%= render 'shared/shuffle' %>

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

于 2013-09-07T07:18:18.730 回答