Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/61.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 显示知道用户id的用户配置文件\u名称_Ruby On Rails_Ruby On Rails 3 - Fatal编程技术网

Ruby on rails 显示知道用户id的用户配置文件\u名称

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

我在我的指南模型中添加了一个updated_by属性,该属性存储了更新指南的人的用户id。我想在我的“显示”视图中将其显示为更新者的个人资料名称

在指南\u controller.rb中:

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
不确定这是否是唯一的问题,但让我们一个接一个地解决