Ruby @用户变量为空。忘记传递will_paginate的集合对象?
问题本地主机:3000/用户/不会显示 我很谦虚地进入,因为我正试图第一次通过rails教程。我在第10章,我已经解决这个问题5个小时了。当我尝试访问localhost:3000/users/时,我得到一个错误(我相信这与factory\u girl有关),该错误解释了@users变量为空,并且我忘记传递will\u paginate的集合对象 我目前正在阅读第10章第10.23节,每次跑步时: $bundle exec rake db:reset$bundle exec rake db:populate $bundle exec rake数据库:测试:准备 我在解释这件事时出错了 雷克流产了! 已注册工厂:micropost 这是我第二次尝试这一章,因为我第一次遇到问题,从第9章开始。请提供帮助,并在提供指导时清晰详细。我很高兴发布任何有帮助的文件 这是我的index.html.erb-我将它们保存为html,是否应该将它们保存为ruby文件Ruby @用户变量为空。忘记传递will_paginate的集合对象?,ruby,variables,factory-bot,railstutorial.org,isnullorempty,Ruby,Variables,Factory Bot,Railstutorial.org,Isnullorempty,问题本地主机:3000/用户/不会显示 我很谦虚地进入,因为我正试图第一次通过rails教程。我在第10章,我已经解决这个问题5个小时了。当我尝试访问localhost:3000/users/时,我得到一个错误(我相信这与factory\u girl有关),该错误解释了@users变量为空,并且我忘记传递will\u paginate的集合对象 我目前正在阅读第10章第10.23节,每次跑步时: $bundle exec rake db:reset$bundle exec rake db:pop
<% 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
class UsersControllerparams[:page])
结束
def创建
@user=user.new(参数[:user])
如果@user.save
在@user中登录
flash[:success]=“多做你喜欢的事情!”
将_重定向到@user
其他的
呈现“新”
结束
结束
定义编辑
结束
def更新
如果@user.update_属性(参数[:user])
flash[:success]=“配置文件已更新”
在@user中登录
将_重定向到@user
其他的
渲染“编辑”
结束
结束
def销毁
User.find(params[:id]).destroy
flash[:success]=“用户已销毁。”
将\u重定向到用户\u url
结束
私有的
def已签名用户
除非你签了名?
门店位置
重定向至登录url,注意:“请登录。”
结束
结束
def正确的用户
@user=user.find(参数[:id])
重定向到(根路径),除非当前用户(@user)
结束
def管理员用户
将_重定向到(根路径),除非当前_user.admin?
结束
/users
应指向UsersController#索引。确保您正在分配集合@users
例如,在最基本的层面上,它可能是这样的:
def index
@users = User.all # not paginated
@users = User.paginate(page: params[:page]) # paginated
end
至于测试数据库错误,我猜这是因为您多次定义了:micropost工厂 在用户控制器中,确保您有@Users,如果您正在使用will\u paginate,请确保调用
.paginate(page:params[:page],per\u page:20]
,并且在您的视图中,使用
而不是@user=user.find(params[:id]),这是您应该使用的
@users=User.paginate(page:params[:page])AJcodez,谢谢您的帮助。我尝试了这个方法,但没有成功。我知道这就是问题所在,所以我一直在玩变体游戏,但没有成功。我在哪里可以找到:micropost工厂的定义?我已将用户控制器行从atusers=User.paginate(:page=>params[:page])更改为to atusers=User.paginate(第页:参数[:第页],[每页:20]
这就是您的建议吗?我现在收到一个新错误。它是语法错误,意外的'\n',期望tASSOC@John我应该键入什么来向这个文本框表明我正在输入代码?请参阅下面的说明,该网站如何使用Markuptomy帮助我通过gchat解决了这个问题,这个问题比这里的问题更完整。