ruby 如何在localStorage中存储分页行/页大小值,以便在更改页面后保持用户的行/页大小选择?

jdzmm42g  于 2023-02-03  发布在  Ruby
关注(0)|答案(1)|浏览(120)
<div class="table-pagination">
  <%= paginate @client_requests %>
  <div class="dynamic-page-selection mt-1">
    <div class="dropdown">
      <button class="btn btn-row dropdown-toggle" type="button" data-bs-toggle="dropdown" aria-expanded="false">
        <%= @client_request.limit_value %> Rows / Page
      </button>
      <ul class="dropdown-menu">
        <% PAGE_SIZES.each do |size| %>
          <li><%= link_to size, url_for(per_page: size), class: "dropdown-item" %></li>
        <% end %>
      </ul>
    </div>
  </div>
</div>

控制器:-
@每页=参数[:每页]如果参数为[:每页]
更改页面后,我的行/页大小被重置为默认的行/页值。因此,如何在我选择的本地存储中存储大小。

iih3973s

iih3973s1#

首先,我建议不要使用本地存储来完成这个任务。但是如果你仍然想使用,试试这个。

<div class="table-pagination">
  <%= paginate @client_requests %>
  <div class="dynamic-page-selection mt-1">
    <div class="dropdown">
      <button class="btn btn-row dropdown-toggle" type="button" data-bs-toggle="dropdown" aria-expanded="false">
        <%= @client_requests.limit_value %> Rows / Page
      </button>
      <ul class="dropdown-menu">
        <% PAGE_SIZES.each do |size| %>
          <li><%= link_to size, url_for(per_page: size), class: "dropdown-item", onClick: "localStorage.setItem('pageSize', #{size})" %></li>
        <% end %>
      </ul>
    </div>
  </div>
</div>

<script>
  window.onload = function() {
    var pageSize = localStorage.getItem("pageSize");
    if (pageSize) {
      // Set the selected page size value
      document.querySelector(".btn-row").innerText = pageSize + " Rows / Page";
    }
  };
</script>

在上面的代码中,当用户选择了一个页面大小,它会被存储在localStorage中,并带有关键字pageSize。当页面加载时,代码会检查localStorage中是否有pageSize的值,如果有,它会更新按钮上的文本以反映用户的选择。

相关问题