2014-09-02 136 views
1

嗯,我正在嘗試與ajax分頁。Ruby on Rails - Ajax分頁EXTRA_CONTENT_DISCARDED

我有這部分稱爲`_ofertas_ativas.html.erb

<h1>Ofertas Activas</h1> 
<table class="table table-striped table-bordered"> 
    <tr> 
    <%= ajax_section :id => "page", :render => "page" %> 
    </tr> 
</table> 
<p><%= link_to "ver todas", ofertas_path %></p>` 

頁部分在這裏:

<%= ajax_loadzone do %> 
    <% @ofertas_ativas.each do |oferta| %> 
    <td> 
     <p><%= link_to oferta.titulo, oferta_path(oferta) %></p> 
     <p><%= oferta.data_inicio %> a <%= oferta.data_fim %></p> 
     <p><%= oferta.corpo %></p> 
     <% if @user.role == "candidato" %> 
     <%= link_to "Candidatar-me", "/candidatura/#{current_user.candidato.id}/#{oferta.id}" , class: "btn btn-default btn-primary" %> 
     <% elsif current_user?(@user) %> 
     <%= link_to "Editar", edit_oferta_path, class: "btn btn-default btn-primary" %> 
     <% end %> 
    </td> 
    <% end %> 
<% end %> 
<%= ajax_links :section_id => "page" do %> 
    <%= will_paginate @ofertas_ativas %> 
<% end %> 

這是我的控制器:

def show 
    @user = User.find(params[:id]) 
    if @user.role == "entidade" 
     @user_ent = Entidade.find_by("user_id = ?",params[:id]) 
     @ofertas_ativas = @user_ent.ofertas.where("ativa = ?",true).paginate(page: params[:page], :per_page => 2) 
     respond_to do |format| 
     format.html 
     ajax_respond format, :section_id => "page" 
     end 

當我點擊下一個按鈕或此消息出現的編號:

AJAX Pagination EXTRA_CONTENT_DISCARDED: 
Extra content returned by AJAX request ignored. Only a portion of the page content returned by the server was required. To fix this, explicitly call ajax_respond :section_id => "page" to render only the partial view required. This warning can be turned off in the ajax_pagination initializer file. 

是因爲我有_ofertas_ativas部分?我真的不知道如何解決這個問題。我還是不太明白這個在控制器中的respond_to。

有人知道這是怎麼回事嗎?

+0

您是否使用導軌4 – 2014-09-02 09:50:50

+0

是的,我正在使用導軌4.但我不認爲這是問題所在。是嗎? :/ – Lokuzt 2014-09-02 09:51:56

+0

這個用rails 4有問題的gem我把這個放在回答塊 – 2014-09-02 09:52:31

回答

0

如果您在從rails控制器返回的內容中遇到任何問題,請參閱https://github.com/ronalchn/ajax_pagination/blob/master/lib/assets/javascripts/ajax_pagination.js.erb。您也可以忽略此警告在初始化config/initializers/ajax_pagination.rb,如:

AjaxPagination.config do |config| config.warnings = false end 

不過這也產生與軌道的問題4在這裏看到https://github.com/ronalchn/ajax_pagination/issues/8

很少有以軌道4這顆寶石https://github.com/ronalchn/ajax_pagination/issues

+0

我認爲這只是我做這件事的方式。導致所有!我看到和看到的例子只是索引。沒有人告訴你如何從索引中刪除它。我正在一個演出頁面上做。在那裏我想分頁列出項目。 – Lokuzt 2014-09-02 10:05:05

+0

試試你的索引。但這是與rails版本相關的問題。所以我認爲你應該轉向其他創業板。 – 2014-09-02 10:09:42

+0

在索引中它可以工作,但會引發相同的警告。但阿賈克斯分頁的作品。它會在沒有重新加載頁面的情況下進入另一個頁面 – Lokuzt 2014-09-02 10:23:05

0
相關的多個問題

如果有任何幫助: 我評論了寶石本身的警告代碼。 寶石/ ajax_pagination-0.6.3/lib中/資產/ Java腳本/ ajax_pagination.js.erb

線197

// <% if AjaxPagination.warnings %> 

// alert("AJAX Pagination EXTRA_CONTENT_DISCARDED:\nExtra content returned by AJAX request ignored. Only a portion of the page content returned by the server was required. To fix this, explicitly call ajax_respond :section_id => \"" + section_id + "\" to render only the partial view required. This warning can be turned off in the ajax_pagination initializer file."); 

// <% end %> 

警報是一點整行**

到目前爲止,還沒有其他問題,如果有更新,將會更新。你或多或少告訴軌道通過配置文件做同樣的事情。

0

我對Ruby/Rails很新,但這是我對這個問題的看法。

我不知道爲什麼會出現這個問題,但讓我們說,這是一個兼容性問題Rails的4 *

不要註釋掉報警代碼或禁用警告。此警告是合法的。它說你的服務器返回完整的頁面而不是所需的片段。它佔用更多帶寬,並在服務器上增加更多負載,因爲它呈現整個頁面。

所以這是我解決了這個問題:

配置/初始化/ mime_types.rb註冊新的自定義MIME類型

Mime::Type.register "text/html", :ajax 

可以命名你想要的東西。我選擇了「阿賈克斯」。

請注意,它是Rails已經默認定義的「text/html」類型。

然後將查看文件_ofertas_ativas.html.erb重命名爲_ofertas_ativas.ajax.erb

然後在你的控制器更換行:

ajax_respond format, :section_id => "ofertas_ativas" 

format.ajax { render :partial => "ofertas_ativas" } 

現在你的respond_to代碼塊是這樣的:

respond_to do |format| 
    format.html # index.html.erb 
    format.ajax { render :partial => "ofertas_ativas" } 
end 

Ajax請求說, 「ajax_pagination」 寶石使得接受:text/html。現在你有兩個MIME類型的處理程序定義了text/html。

如果第二行不存在,Rails將執行默認的ajax mime類型處理程序,它是JS,因此將呈現index.js.erb。但是,因爲這是ajax請求,並且存在非默認的html mime類型註冊(ajax),它會嘗試查找_ofertas_ativas.ajax.erb。

我希望這會有所幫助。

P.S.我絕對建議使用其他寶石。