1

繰り返し申し訳ありませんが、何度も検索した後、私の質問に対する答えが見つかりませんでした。will_paginate は呼び出し後に機能しませんAjax

  1. 削除アクションの後、ページ番号はまったく表示されません (単にすべての結果が返されます)。
  2. 検索アクションの後、ページ番号が更新されず、実際に表示されるページよりも多くのページが表示されます。

ここにコントローラーコードがあります。

class CitiesController < ApplicationController

 def index
     @cities = City.get_cities(params[:city_name],params[:city_population]).paginate(:page => params[:page])
  respond_to do |format|
    format.html 
    format.js
  end

 end

 def create
      @city = City.new(params[:city])

  if @city.save
       flash[:success] = "City information saved successfully"

       redirect_to cities_path
    else
        render 'index'
    end
 end


def new
    @city = City.new
end


 def destroy
   @city = City.find(params[:id]).destroy
   @city.destroy
   @cities = City.all
   respond_to do |format|
      format.html {redirect_to cities_path}
      format.js
    end
  end

 end

インデックス ビューは次のとおりです。

 <div class="row">
<h1>Search Cities or <%= link_to "Create New City", new_city_path %></h1>
<h3>99 random city information are generated in the database </h2>
<h3>Simply type any letter or city population between 0 and 10 to filter out</h3>
<%= form_tag "/cities/index", method: :get, remote: true do %>
  <%= label_tag(:q, "City Name:") %>
  <%= text_field_tag 'city_name' %>
  <%= label_tag(:q, "City Population greater than, in units of 1 million:") %>
  <%= text_field_tag 'city_population' %>
  <label></label>
  <%= button_tag("Search", :class => "btn") %>
<% end %>
<% flash.each do |key, value| %>
   <div class="alert alert-<%= key %>"><%= value %></div>
<% end %>


<div id='table' class="table table-striped">
    <%= render 'table' %> 
</div>


<%=will_paginate @cities %>
 </div>

テーブルの部分的なビューを次に示します。

<div class="row">
<h1>Enter City descriptions or <%= link_to "Search Cities", cities_path %></h1>
<%= form_for @city, html: {multipart: true} do |f| %>

<%= f.label :city_name %>
<%= f.text_field :city_name %>

<%= f.label :city_description %>
<%= f.text_field :city_description %>

<%= f.label :city_population_in_units_of_millions %> 
<%= f.text_field :city_population %>
<label></label>

<%= f.file_field :image%>

<label></label>
<%= f.submit "Create new City", :class => "btn"%>
<% end %>
</div>

Finally two js.erb codes associated with index and delete actions:

index.js.erb:

$('#table').html('<%= escape_javascript(render('table')) %>');

destroy.js.erb:

$('#table').html('<%= escape_javascript(render('table')) %>');
4

2 に答える 2

1

自分で解決策を見つけました。

<%= will_paginate @cities %>部分ファイルに追加

@cities = City.allそしてに変更

@cities = City.all.paginate(page: params[:page])

オブジェクトの をwill_paginate期待していないためです。array

于 2012-10-29T23:09:00.863 に答える
0

コントローラーに書き込みます

def index
  @cities = City.get_cities(params[:city_name],params[:city_population]).paginate(:page => params[:page])
  respond_to do |format|
   format.html 
   format.js  
  end 
end

ビューフォルダーに作成index.js.erbして書き込みます

$('id or class').html('<%=escape_javascript render :partial => which part you update %>')
于 2012-10-29T05:52:03.110 に答える