什么是#< ..>在Ruby on Rails上?

时间:2017-07-21 09:49:17

标签: ruby-on-rails ruby

我选择了一行Model by

  

@name = Quest.where(category: 'cat1').sample(1)

并在此视图上打印

<p><%= @name %></p>

然后在视图

上打印出[#<Quest id: 4, name: "q4", category: "cat1", content: "d", description: "d", created_at: "2017-07-21 08:28:00", updated_at: "2017-07-21 08:28:00">] 它是什么?和

#<..> ??

的意思是什么

2 个答案:

答案 0 :(得分:1)

使用sample代替sample(1),因为第一个会返回一个实例而不是一个包含一个元素的数组

@question = Quest.where(category: 'cat1').sample(1)
#=> [#<Quest id: 4, name: "q4", category: "cat1", content: "d", description: "d", created_at: "2017-07-21 08:28:00", updated_at: "2017-07-21 08:28:00">]

上面的语句将返回一个包含1个元素的数组。所以,改为使用

@question = Quest.where(category: 'cat1').sample
#=> #<Quest id: 4, name: "q4", category: "cat1", content: "d", description: "d", created_at: "2017-07-21 08:28:00", updated_at: "2017-07-21 08:28:00">

然后您可以访问Question属性

<p><%= @question.name %></p>

答案 1 :(得分:0)

@name表示Quest模型的单个对象数组。要获取该对象的ID,请使用

 <p><%= @name.first.id %></p>

或将您的控制器代码更改为

@name = Quest.where(category: 'cat1').sample

然后再做

<p><%= @name.id %></p>