0

Rails 3.2 で、ページごとに表示されるアイテムの数を選択するドロップダウン メニューを使用して、ページ分割されたインデックス ビューを作成しようとしています。私は will_paginate ジェムを使用していますが、ページネーション機能はうまく機能しています。

ただし、以下に示す現在の設定では、ドロップダウン メニューの選択を変更すると検証エラーが発生します。index アクションに別のリクエストを行うのではなく、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 %>

最後に、ページごとのアイテムが変更されたときに、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 %>

これがないと、投稿を行い、「メソッド」をパラメータとして送信します。'index' URLに投稿すると、表示されている検証エラーが発生します。

于 2013-01-23T05:42:18.843 に答える