Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/59.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 未定义的方法';用户';零级:零级_Ruby On Rails_Ruby_Ruby On Rails 4 - Fatal编程技术网

Ruby on rails 未定义的方法';用户';零级:零级

Ruby on rails 未定义的方法';用户';零级:零级,ruby-on-rails,ruby,ruby-on-rails-4,Ruby On Rails,Ruby,Ruby On Rails 4,根据课程中为期一个月的Rails课程:Pins用户和关联运行Rails控制台后,我必须执行以下操作: Pin.connection #This establishes a connection to the database (And spits out a LOT of unnecessary data) Pin.inspect #shows all of the parameters for a Pin CONTROL + D #closes the Console pin = Pi

根据课程中为期一个月的Rails课程:
Pins用户和关联
运行
Rails控制台
后,我必须执行以下操作:

Pin.connection #This establishes a connection to the database (And spits out a LOT of unnecessary data)

Pin.inspect #shows all of the parameters for a Pin 
CONTROL + D #closes the Console 

pin = Pin.first #make sure Pin.first is UPPERCASE
pin.user
但是当我编写
pin.user
时,我得到一个错误
NoMethodError:nil:NilClass的未定义方法“user”

我已经添加了
属于:user
并且
有许多:pin

我不明白为什么我会犯那个错误


My github是

为了澄清,创建错误是因为原始对象(在您的例子中是
@pin
)没有填充任何数据(因此它是
nil

--

错误

很多初学者对这个错误感到困惑,但很简单:

@pin.user 
^这将调用
@pin
对象上的
.user
user
方法是从rails关联中创建的(
属于:user
),用于向您提供关联数据

您遇到的问题是,您正在对一个未填充的对象(它是
'nil'
类的一部分)调用
.user
,从而阻止了
.user
方法的实际运行

--

修复

要解决此问题,应执行以下操作:

#app/controllers/pins_controller.rb
Class PinsController < ActieRecord::Base
    def show
        @pin = Pin.find params[:id] #-> or Pin.first
    end
end

#app/views/pins/show.html.erb
<%= @pin.user %>
#app/controllers/pins_controller.rb
类PinsController或pin.first
结束
结束
#app/views/pins/show.html.erb

如果在此之后出现错误,通常意味着数据不一致(数据库中没有数据),或者系统的某些其他部分不一致。

请确保pins表具有列名user\u id。或者检查数据库中是否存在第一个Pin的记录

如果你和我一样,你所有的代码都是正确的,而Mattan只是把一小段代码放错了地方

class PinsController < ApplicationController

  before_action :authenticate_user!, except: [:index, :show]

  before_action :set_pin, only: [:show, :edit, :update, :destroy]

  before_action :correct_user, only: [:edit, :update, :destroy]
class PinsController
确保在\u操作之前
:验证\u用户!,除了:[:index,:show]
位于列表的顶部


编辑:事实上,我看到你在上一节课的前半部分;我将保留这个答案,因为我在试图找出授权部分时被引导到了这个问题。

pin.user
应该是
pin.user(caps p)
我猜。数据库中有pin吗?它说的是
pin=pin。首先
返回nil如果你所做的是
pin=pin。首先
,那么你的数据库中就没有
pin
,你需要创建一个
pin
pin=pin。首先
返回
nil
,你正试图从
nil
对象获取用户实例。因此,您将获得nil:NilClass的
NoMethodError:undefined方法“user”
@bjhaid如何创建Pin?