0

我想分頁微博。我用的是以下幾點: <%= will_paginate @ user.microposts%> 但它會返回一個錯誤: 未定義的方法`TOTAL_PAGES'爲# 請幫我 控制器方法如下:will_paginate不起作用,返回一個未定義方法的錯誤`total_pages'

class UsersController < ApplicationController 
    before_filter :signed_in_user, only: [:index,:edit, :update] 
    before_filter :correct_user, only: [:edit, :update] 
    before_filter :admin_user, only: :destroy 
    def index 
    @users = User.paginate(page: params[:page]) 
    @microposts = @user.microposts.paginate(page: params[:page]) 
    end 
    def new 
    @user = User.new 
    end 
    def show 
    @user = User.find(params[:id]) 
    end 
    def destroy 
    User.find(params[:id]).destroy 
    flash[:success] = "User destroyed." 
    redirect_to users_path 
    end 
    def update 
    @user = User.find(params[:id]) 
    if params[:user].present? && @user.update_attributes(params.require(:user).permit(:name,:password, :password_confirmation)) 
    flash[:success] = "Profile updated" 
    sign_in @user 
    redirect_to @user 
    else 
    render 'edit' 
    end 
    end 


    def edit 
    @user = User.find(params[:id]) 
    if params[:user].present? && @user.update_attributes(params.require(:user).permit(:name,:password, :password_confirmation)) 
    flash[:success] = "Profile updated" 
    sign_in @user 
    redirect_to @user 
    else 
    render 'edit' 
    end 
    end 

    def create 
    @user= User.create(user_params) 
    if @user.save 
    sign_in @user 
    flash[:success] = "Welcome to the Sample App!" 
    redirect_to @user 
    else 
    render 'new' 
    end 
    end 


    private 
    def user_params 
     params.require(:user).permit(:password, :password_confirmation, :email,:name) 
    end 
    private 
    def signed_in_user 
     unless signed_in? 
     store_location 
     redirect_to signin_path, notice: "Please sign in." 
    end 
    end 
    def correct_user 
    @user = User.find(params[:id]) 
    redirect_to(root_path) unless current_user?(@user) 
    end 
end 
+0

請問您可以發佈您的控制器方法。 – spickermann

+0

您是使用'.page'還是'.paginate'方法加載記錄? will_paginate不起作用,如果你只是調用'.all' – javanut13

+0

我正在使用.paginate方法 – Shivani

回答

0

這裏:@microposts = @user.microposts.paginate(page: params[:page])

@user沒有內部index定義,也沒有任何before_filter設置(如果您使用Rails 4 *,before_action是新的語法before_filter是Rails的deprecated 5)

編輯:和@Sukanta是正確的有關視圖

0

你可以試試這個

<%= will_paginate @microposts %> 

代替

<%= will_paginate @user.microposts %> 
0

before_filter :correct_user, only: [:edit, :update]表示correct_user方法僅適用於編輯和更新方法。要使用它的索引方法,您需要將索引方法添加到列表中。即, before_filter :correct_user, only: [:index, :edit, :update] 而且,也使用before_action而不是before_filter。

相關問題