如何在Rails 3中将每页项目下拉菜单添加到索引视图?

时间:2013-01-23 05:18:54

标签: ruby-on-rails ruby-on-rails-3

我正在尝试使用下拉菜单在Rails 3.2中创建一个分页索引视图,以选择每页显示的项目数。我正在使用will_paginate gem并且分页功能运行良好。

但是,根据下面显示的当前设置,我在更改下拉菜单选项时收到验证错误。它似乎试图创建或保存Contact模型,而不是仅仅对索引操作发出另一个请求。任何帮助将不胜感激。

这是我的索引操作:

def index
  #logic here to set per_page value depending on request?
  @contacts = Contact.paginate(page: params[:page], :per_page => 20)
end

这是我的index.html.erb视图,我尝试了每页项目的下拉菜单:

<%= form_tag({ :action => "index", :method => "get" }, { :id => "contacts-index" }) do %>
  <%= select_tag(:view, options_for_select([["10", 10], ["25", 25], ["50", 50]]), { :id => "switch-view" }) %>
<% end %>

<% @contacts.each do |contact| %>
  <%= contact.first_name %><%= contact.last_name %>
<% end %>

最后,这是我用来尝试在每页的项目更改时向联系人#index提交新请求的jQuery:

$(document).ready(function() {
  $("#switch-view").change(function() {
    $("#contacts-index").submit();
  });
});

1 个答案:

答案 0 :(得分:1)

应将

:method => get移出第一个哈希值。

<%= form_tag({ :action => "index"}, { :method => "get", :id => "contacts-index" }) do %>

没有这个,它正在做一个帖子并将'方法'作为参数提交。 “index”网址的帖子会导致您看到的验证错误。