2011-06-19 47 views
0

在我的應用程序中,我使用JavaScript過濾了場地記錄,並在會場索引頁面上以部分形式顯示了它們。但是,當我設置了will_paginate時,過濾器表單會中斷,它們都單獨工作,但不能一起工作。我在這裏做錯了什麼?當我使用will_paginate時,爲什麼不能使用jQueryUI按鈕和javascript工作?

jQuery腳本

<script> 
    $(function() { 
    $(".venuetypes").buttonset(); 
    }); 

    $(function() { 
    $(".areas").buttonset(); 
    }); 

    $(function() { 
    $("button, input:submit, a", ".filter_form_button").button(); 
    $("a", ".form_filter_button").click(function() { return false; }); 
    }); 
</script> 

過濾形式

<div class="filter_options_container"> 
    <%= form_tag '', :method => :get, :id => 'filter_form' do %> 

    <fieldset class="filter_form_fieldset venuetypes"> 
     <% Venuetype.all.each do |v| %> 
     <p class="venuetype_check"><%= check_box_tag 'venuetypes[]', v.id, false, :id => "venuetype-#{v.id}" %> 
     <label for="venuetype-<%= v.id %>"><%= v.name %></label></p> 
     <% end %> 
    </fieldset> 

    <fieldset class="filter_form_fieldset areas"> 
     <% Area.all.each do |a| %> 
     <p class="area_check"><%= check_box_tag 'areas[]', a.id, false, :id => "area-#{a.id}" %> 
     <label for="area-<%= a.id %>"><p1><%= a.name %></p1></label></p> 
     <% end %> 
    </fieldset> 

    <div class="filter_form_button"> 
     <p2><input type="submit" value="Filter"/></p2> 
    </div> 
    <% end %> 
</div> 

場地控制器

def index 
    if 
     @venues = Venue.with_type(params[:venuetypes]).with_area(params[:areas]).order("average_rating DESC").all 
    else 
     @venues = Venue.all 
    end 
    @venues = Venue.paginate :all, :page => params[:page], :per_page => 15 
    end 

非常感謝所有幫助我非常感謝!

+0

確保你看到我更新的代碼。你添加了一個逗號。 – s84

回答

1

要覆蓋@venues變量,當我想你想的分頁添加到查詢。試試這個:

def index 
    if 
    @venues = Venue.with_type(params[:venuetypes]).with_area(params[:areas]).order("average_rating DESC").all 
    else 
    @venues = Venue.all 
    end 
    @venues = @venues.paginate :per_page => 15, :page => params[:page] 
end 
+0

啊,這是有道理的!它的工作原理!非常感謝 – Dave

+0

@Dave沒有問題,如果您考慮表示「尚未執行」查詢的@venues,那麼這很有意義。每個方法調用都會創建一個新的查詢對象,而不是實際執行查詢,否則您最終會在Web服務器上進行所有篩選和排序,而不是數據庫。 –

0

您正在添加額外的逗號。

這是應該的:

Model.pagination :per_page => 15, :page => params[:page] 

所以,你應該有這樣的:

def index 
    if 
    @venues = Venue.with_type(params[:venuetypes]).with_area(params[:areas]).order("average_rating DESC").all 
    else 
    @venues = Venue.all 
    end 
    @venues = Venue.paginate :per_page => 15, :page => params[:page] 
end 
+0

謝謝你的答案,但它沒有改變任何東西,但是,如果我改變控制器閱讀:@venues = Venue.with_type(params [:venuetypes])。with_area(params [:areas])。order(「average_rating DESC 「).all.paginate並刪除2'端之間的最後一行代碼它工作,但我不能添加:per_page => 15位,因爲它給出了一個語法錯誤。 – Dave

相關問題