Html 通过下拉菜单选择每页的结果数

Html 通过下拉菜单选择每页的结果数,html,ruby-on-rails,ruby,pagination,kaminari,Html,Ruby On Rails,Ruby,Pagination,Kaminari,我使用kaminari分页宝石。我可以将每页的结果限制为6个。这是my products_controller中分页的一个示例: def index @products = Product.order(:title).page(params[:page]).per(6) end 但是,我希望用户能够通过用户界面视图来更改,而不是硬编码分页代码中的“6”。我希望在视图上有一个下拉菜单,以便用户可以选择“3”、“6”或“9”。我该怎么做?我猜它可能涉及一个实例变量来存储用户的选择,但我不确定,

我使用kaminari分页宝石。我可以将每页的结果限制为6个。这是my products_controller中分页的一个示例:

def index
  @products = Product.order(:title).page(params[:page]).per(6)
end
但是,我希望用户能够通过用户界面视图来更改,而不是硬编码分页代码中的“6”。我希望在视图上有一个下拉菜单,以便用户可以选择“3”、“6”或“9”。我该怎么做?我猜它可能涉及一个实例变量来存储用户的选择,但我不确定,有人能帮忙吗?我的application.html.erb中有以下下拉菜单:

<div id="per-page">
  <select>
    <option value="3">3</option>
    <option value="6">6</option>
    <option value="9">9</option>
  </select>
</div>

3.
6.
9
在选择字段中添加一个
名称(例如“per”),例如:

<select name="per"> ... </select>
这将获取用户的选择(如果未选择,则为“6”),并将其强制为整数(我不确定Kaminari是否需要此强制)

是的,您可能需要一个“开始”按钮。您应该能够像这样包装您的选择字段:

 <form>
   <div id="per-page"> ... </div>
   <button>Go!<button>
 </form>
一些调试建议

放在
application.html.erb
底部的某个位置(但在
正文
内)


尝试手动将
per
参数添加到URL,例如
localhost:3000/search?per=3

对不起,我对ruby真的很陌生,当你说向select字段添加一个名称时,我该怎么做?另外,我是否需要一个“Go”按钮来重新加载页面,以确保加载每页请求的数量?@benjs.1,我已经在我的回答中添加了一些细节。谢谢,我真的不想使用JavaScript,没有它有什么方法可以做到这一点吗?也许通过使用get方法?即使使用JavaScript(我已经将其放在Application.js中),它仍然不起作用,我认为这可能是因为在per(params.fetch(:per,'6')中.to_i 6仍在被选择,而不是被选择的值,但不知道如何更改它并使其正确?是的,您不需要使用JS,只需在表单中添加一个按钮。我在上面添加了一些调试建议。
 <form>
   <div id="per-page"> ... </div>
   <button>Go!<button>
 </form>
$('#per').on('change', function() {
  $(this).closest('form').submit();
});