2017-05-14 4 views
1

私はページナンバー(カミナリ経由)の通知センターを作成しようとしています のようなfacebook。ヘッダーのカミナリページネーションの使い方

このセンターでは、どのページからでもページ区切りを表示したい(このセンターはヘッダーファイルに含まれています)。

ここでコードを書きましたが、home.htmlにアクセスすると適切に表示されます しかし、そのページングは​​他のページでは機能しません(例:views/test/test.html.erb)。 おそらく、ajaxはjsファイルを読むことができないようですので、test.js.erbファイルをviews/testに置くと動作します。

操作と保守の観点からは、それは望ましくない方法です。

js.erbファイルを1つだけ使用してページ番号を読み取るにはどうすればよいですか?あなたのご協力ありがとうございます

ソースコードは以下のとおりです。

モデル

APP /モデル/ item.rb

class Item < ActiveRecord::Base 
    paginates_per 50 
end 

コントローラ


アプリ/コントローラ/ items_controller.rb

before_action :pagination 


def pagination 
    @items = Item.page params[:page] 
end 

ビュー


アプリ/ビュー/静的/ home.html.erb

<%= render 'static/header' %> <!-- reading partial header--> 

アプリ/ビュー/静的/ _header.html.erb

<div><%= render 'application/items', items:@items %></div>  

アプリ/views/static/home.js.erb

$('#items').append("<%= escape_javascript(render '_items', object: @items) %>"); 
    $("#more_link").replaceWith("<%= escape_javascript(link_to_next_page(@items, 'more', remote: true, id: 'more_link')) %>"); 

アプリ/ビュー/アプリケーション/ _items.html.erb

<div id="items"> 
    <%= render 'items' %> 
</div> 
<%= link_to_next_page @items, 'more', remote: true, id: 'more_link' %> 

アプリ/ビュー/アプリケーション/ __

<% @items.each do |item| %> 
    <div><%= item.name %></div> 
<% end %> 

答えて

0

items.html.erb私は別々に作成することをお勧めしたいですAjaxリクエストを処理するコントローラーアクション:

class ItemsController 
    def paginate 
    end 
end 

js.erbコードはviews/items/paginate.js.erbです。

リンクにcontrolleractionのparamsを追加することが可能でなければなりませんので、雷のlink_to_next_pageヘルパーは内部link_toを使用しています。

<%= 
    link_to_next_page @items, 'more', 
    controller: 'items', 
    action: 'paginate', 
    remote: true, 
    id: 'more_link' 
%> 
+0

は、あなたの答えをありがとう! あなたのソリューションに加えて、ルーティングをセットアップして、ついにそれは完全に機能しました! link_toヘルパーへのあなたのコメントに特別なおかげで行く! –

関連する問題