如何实现Ruby哈希的分页

时间:2018-08-13 07:13:16

标签: ruby-on-rails ruby will-paginate

我需要为以下哈希实现分页。我需要通过分页向房间展示地板。

Hash = { floor_1 : [101,102,103], floor_2: [201,203,204], floor_3: [301,302,303] }

有什么想法吗?我正在使用Will分页宝石,但它不起作用。

1 个答案:

答案 0 :(得分:1)

您是否要在不同的页面上显示与每个floor_x键相关的值?

如果是这样,则可以在一个非常基本的级别上使用以下内容(例如,在您的控制器中):

def index
  @hash = { floor_1: [101,102,103], floor_2: [201,203,204], floor_3: [301,302,303] }
end

您认为:

<% params[:floor] ||= 1 %> # show values for floor_1 if param not provided
<% hash["floor_#{params[:floor]".to_sym].each do |vals| %>
  # display your values
<% end %>
<%= link_to 'Down A Floor', your_path(params[:floor].to_i - 1) if hash["floor_#{params[:floor].to_i - 1}".to_sym] %>
<%= link_to 'Up A Floor', your_path(params[:floor].to_i + 1) if hash["floor_#{params[:floor].to_i + 1}".to_sym] %>

非常基础,但可能会让您步入正轨。基本上,您可以将楼层/值的哈希值提供给视图,并显示当前楼层以及指向上下两个楼层的链接(如果存在)。

尽管我想使事情保持非常简单,但您不太希望在最终代码中看起来像这样,有很多讨厌的内联逻辑。请考虑使用演示者或装饰器来处理此问题。