问题 localhost:3000 / users /将不会显示
我谦卑地进入,因为我第一次尝试通过rails教程。我在第10章,我在拍摄这个问题5个小时都遇到了麻烦。当我尝试访问localhost:3000 / users /我得到一个错误(我相信这与factory_girl有关),它解释了 @users变量是空的并且我忘了传递will_paginate 的集合对象。
我目前在第10章第10.23节,每次我都跑:
$ bundle exec rake db:reset
$ bundle exec rake db:populate
$ bundle exec rake db:test:prepare
我收到错误解释
耙子流产了! 工厂已注册:微博
这是我第二次尝试这一章,因为我第一次遇到问题并从第9章开始。请在提供指示时帮助并清楚详细。我很乐意发布任何有用的文件。
这是我的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
答案 0 :(得分:8)
在您的用户控制器中,确保您拥有@users,如果您使用的是will_paginate,请务必致电.paginate(page: params[:page], per_page: 20]
并在视图中<%= will_paginate @users %>
。
答案 1 :(得分:0)
/users
应该指向UsersController #index。确保您要分配集合@users
。
例如,它可能在最基本的层面上看起来像这样:
def index
@users = User.all # not paginated
@users = User.paginate(page: params[:page]) # paginated
end
就测试数据库错误而言,我猜这是因为你不止一次定义了一个:micropost工厂。
答案 2 :(得分:0)
您应该使用@user = User.find(params [:id]) @users = User.paginate(page:params [:page])