为顺序嵌套资源创建link_to

问题描述 投票:0回答:1

我正在创建一个rails应用程序,通过记录的“显示”页面,用户可以循环浏览记录的嵌套资源(类似于幻灯片)。例如,从“show”页面,用户将能够链接到第一个嵌套资源的“show”。从那里,用户将能够链接到下一个嵌套资源的“显示”页面,依此类推。由于每个嵌套资源的id应该从最小到最大排序,我如何创建一个link_to来查找嵌套资源中的下一个最高id(假设为多个记录同时创建嵌套资源,它们可能不一定是顺序的)给定的记录。

ruby-on-rails methods hyperlink nested-resources
1个回答
0
投票

由于Rails魔术,您可以将资源直接传递给路由助手,并且它将使用该资源的正确ID。例如:

<% @foo.bars.each do |bar| %>
    <%= link_to bar.name, foo_bar_path(@foo, bar) %>
<% end %>

以上假设您的路径文件类似于:

resources :foos do
    resources :bars
end

我强烈推荐Rails Routing from the Outside In;这对我来说是一个非常有用的资源!

要设置子资源的顺序,您可以使用scope,如下所示:

class Bar < ActiveRecord::Base
    scope :ordered, -> { order(id: :asc) }
end

然后在你看来,打电话给foo.bars.ordered.each do |bar| etc...。您的嵌套资源将从最低ID返回到最高ID,并跳过已删除的任何ID。

我希望这有助于你所要求的。

编辑

我误解了这个问题。要动态生成“下一个”id,可以在子类上创建方法nextThis answer似乎是你想要的东西。然后在您的视图中,您可以致电:

<%= link_to "Next", bar_path(current_bar.next) %>
© www.soinside.com 2019 - 2024. All rights reserved.