我想知道如何在我的rails应用程序的标题部分中创建一个链接到随机记录的“shuffle”按钮。我有一个“引脚”表,每个引脚都是一个视频。
我搜索了stackoverflow并且无法弄清楚如何做到这一点.. 我认为它与标题部分有关,不适用于Pins控制器/模型。
当有人点击按钮时,它应链接到以下内容:
website.com/pins/13
任何帮助都会非常感谢!
编辑: 这是我之前尝试过的代码:
offset = rand(Model.count) rand_record = Model.first(:offset => offset)
但我是铁杆新手,我不知道该把它放在哪里。我尝试将它放在模型和控制器中,两者都不起作用。
答案 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' %>
请注意,如果您在页面中多次渲染此部分,则每个链接的随机模型将有所不同。