我是Ruby的新手,我在完成我想要解决的练习时遇到了麻烦。这是一个经典的房间游戏,经过一段时间的混乱,我想出了一个对我来说看起来不错的代码 - 减去那不起作用。
我试图从类中的另一个方法中调用select方法,我很确定它是一个数组(@position),但是我收到了上面的错误信息。
以下是我的代码示例,欢迎任何有关.select为私有的想法!
GridView::widget([
'dataProvider' => $dataProvider,
'columns' => [
'id',
'name',
'created_at:datetime',
// ...
],
]);
答案 0 :(得分:0)
您在类型为Room的对象上调用select
,而不是数组。这只是一个房间,因为这条线
@position = @rooms[0]
答案 1 :(得分:0)
select
的接收者是@position
,它是Room
的一个实例。让我们来看看这个方法:
Room.instance_method(:select)
#=> #<UnboundMethod: A(Kernel)#select>
Room.private_instance_methods.include?(:select)
#=> true
Room.public_instance_methods.include?(:select)
#=> false
这告诉我们at方法是未绑定的(来自模块Kernel
,即Kernel#select)和private
,后者解释了收到的错误消息。
Kernel#select
不是所需的方法。这是因为select
的接收方不正确。我希望您想要Array#select,这与@rooms
兼容,但我不知道代码是否正确。