6

問題localhost:3000 /users/が表示されない

初めてレールチュートリアルを通過しようとしているので、謙虚に入ります。私は第10章にいますが、これを5時間撮影するのに苦労しています。localhost:3000 / users /にアクセスしようとすると、@ users変数が空であり、 will_paginateのコレクションオブジェクトを渡すのを忘れたことを説明するエラーが発生します(これはfactory_girlと関係があると思います) 。

私は現在、チャプター10、セクション10.23にいて、実行するたびに次のようになります。

$ bundle exec rake db:reset

$ bundle exec rake db:populate

$ bundle exec rake db:test:prepare

それを説明するエラーが発生します

レーキが中止されました!工場登録済み:マイクロポスト

初めて問題に遭遇し、第9章から始めたので、この章を試すのは2回目です。指示を与えるときは、助けて、明確かつ詳細に説明してください。役立つファイルを投稿できてうれしいです。

これが私のindex.html.erbです-これらをHTMLとして保存しますが、代わりにrubyファイルとして保存する必要がありますか?

<% provide(:title, 'All users') %>
<h1>All users</h1>

<%= will_paginate %>

<ul class="users">
  <%= render @users %>
</ul>

<%= will_paginate %>

これが私のユーザーコントローラーです

class UsersController < ApplicationController
  before_filter :signed_in_user, only: [:index, :edit, :update, :destroy]
  before_filter :correct_user,   only: [:edit, :update]
  before_filter :admin_user,     only: :destroy

  def show
    @user = User.find(params[:id])
    @microposts = @user.microposts.paginate(page: params[:page])
  end
end

   def new
    @user = User.new
   end

 def index
    @title = "All users"
    @users = User.paginate(:page => params[:page])
  end

def create
    @user = User.new(params[:user])
    if @user.save
      sign_in @user
      flash[:success] = "Do more of the things you love!"
      redirect_to @user
    else
      render 'new'
    end
  end

def edit
  end

  def update
    if @user.update_attributes(params[:user])
      flash[:success] = "Profile updated"
      sign_in @user
      redirect_to @user
    else
      render 'edit'
    end
  end

  def destroy
    User.find(params[:id]).destroy
    flash[:success] = "User destroyed."
    redirect_to users_url
  end

private

    def signed_in_user
      unless signed_in?
        store_location
        redirect_to signin_url, notice: "Please sign in."
      end
    end

    def correct_user
      @user = User.find(params[:id])
      redirect_to(root_path) unless current_user?(@user)
    end

    def admin_user
      redirect_to(root_path) unless current_user.admin?
    end
4

3 に答える 3

8

ユーザーコントローラーに@usersがあることを確認し、will_paginateを使用している場合は、必ず呼び出し.paginate(page: params[:page], per_page: 20]て、ビューで。を使用します<%= will_paginate @users %>

于 2012-12-19T15:39:16.233 に答える
0

/usersUsersController#indexを指す必要があります。コレクションを割り当てていることを確認してください@users

たとえば、最も基本的なレベルでは次のようになります。

def index
  @users = User.all # not paginated
  @users = User.paginate(page: params[:page]) # paginated
end

テストデータベースのエラーに関しては、:micropostファクトリを複数回定義しているためだと思います。

于 2012-12-19T15:24:06.930 に答える
0

@user = User.find(params [:id])の代わりに、@ users = User.paginate(page:params [:page])を使用する必要があります

于 2020-10-20T14:25:30.493 に答える