0

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

但是,使用下面显示的当前设置,更改下拉菜单选择时出现验证错误。它似乎正在尝试创建或保存 Contact 模型,而不是仅仅向 index 操作发出另一个请求。任何帮助将不胜感激。

这是我的索引操作:

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 %>

最后,当每页的项目发生变化时,这是我用来尝试将新请求提交给 contacts#index 的 jQuery:

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

1 回答 1

1

:method => get应该从第一个哈希中移出。

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

Without this, it's doing a post and submitting the 'method' as a param. A post to the 'index' url will result in the validation errors you're seeing.

于 2013-01-23T05:42:18.843 回答