Ruby on rails 显示知道用户id的用户配置文件\u名称
我在我的指南模型中添加了一个updated_by属性,该属性存储了更新指南的人的用户id。我想在我的“显示”视图中将其显示为更新者的个人资料名称 在指南\u controller.rb中:Ruby on rails 显示知道用户id的用户配置文件\u名称,ruby-on-rails,ruby-on-rails-3,Ruby On Rails,Ruby On Rails 3,我在我的指南模型中添加了一个updated_by属性,该属性存储了更新指南的人的用户id。我想在我的“显示”视图中将其显示为更新者的个人资料名称 在指南\u controller.rb中: def update @guideline = Guideline.find(params[:id]) respond_to do |format| if @guideline.update_attributes(params[:guideline]) @gu
def update
@guideline = Guideline.find(params[:id])
respond_to do |format|
if @guideline.update_attributes(params[:guideline])
@guideline.update_attribute(:updated_by, current_user.id)
这似乎工作正常,并将当前用户的id分配给更新的用户
def show
@guideline = Guideline.find(params[:id])
@created = @user.where(:id=>@guideline.updated_by).first.profile_name
那么我的看法呢
<%= @created %>
如何从更新的\u by id中获取配置文件名?您需要将查找程序作为类方法而不是对象方法调用
@created = User.where(:id => @guideline.updated_by ).first.profile_name
或清洁剂
@created = User.find(@guideline.updated_by).profile_name
您也可能需要按@guideline.updated_by.id
搜索,而不是按@guideline.updated_
搜索。在这种情况下,它将是:
@created = User.find(@guideline.updated_by.id).profile_name
@created = User.find(@guildeline.updated_by).profile_name
您需要将finder作为类方法而不是对象方法调用
@created = User.where(:id => @guideline.updated_by ).first.profile_name
或清洁剂
@created = User.find(@guideline.updated_by).profile_name
您也可能需要按@guideline.updated_by.id
搜索,而不是按@guideline.updated_
搜索。在这种情况下,它将是:
@created = User.find(@guideline.updated_by.id).profile_name
@created = User.find(@guildeline.updated_by).profile_name
这一行:
@created = @user.where(:id=>@guideline.updated_by).first.profile_name
应改为:
@created = User.where(:id=>@guideline.updated_by).first.profile_name
其中
是用户
模型上的类方法@user
(通常)指用户的实例,在本例中,您尚未实例化该实例。(它是nil
;这就是为什么会出现NilClassError
)
更干净的版本是:
@created = User.find(@guideline.updated_by.id).profile_name
@created = User.find(@guildeline.updated_by).profile_name
因为User.find
查找给定用户id的用户。此行:
@created = @user.where(:id=>@guideline.updated_by).first.profile_name
应改为:
@created = User.where(:id=>@guideline.updated_by).first.profile_name
其中
是用户
模型上的类方法@user
(通常)指用户的实例,在本例中,您尚未实例化该实例。(它是nil
;这就是为什么会出现NilClassError
)
更干净的版本是:
@created = User.find(@guideline.updated_by.id).profile_name
@created = User.find(@guildeline.updated_by).profile_name
由于
User.find
为给定的用户id查找用户。错误是由于您在@User上调用where,而不是在User上调用where。就打电话
@created = User.where(:id=>@guideline.updated_by).first.profile_name
不确定这是否是唯一的问题,但让我们逐一解决。错误是因为您在@user上调用where,而不是在user上调用where。就打电话
@created = User.where(:id=>@guideline.updated_by).first.profile_name
不确定这是否是唯一的问题,但让我们一个接一个地解决