0

我有一个周期控制器的显示页面。我想要做的是显示该期间的所有注册。

在我的时期模型中,我有:has_many :registrations,在我的注册模型中,我有belongs_to :period

我想做的是这样的:

  <% registrations.@period.each do |registration| %>

  <% end %>

但这似乎不起作用。我怎样才能使这项工作?并且没有得到错误syntax error, unexpected tIVAR registrations.@period.each do |registration|

4

2 回答 2

4

不,你不能这样做。实例变量始终是私有的,您不能从实例外部访问它们。与对象交互的唯一方法是向其发送消息。

所以,如果你想从外部访问一个实例变量,你需要为它定义一个getter方法。

幸运的是,belongs_to :period已经定义了一个为您调用的 getter 方法period,因此您可以使用它。

于 2012-08-17T11:21:10.307 回答
0

我想你可能想要的是

<% @period.registrations.each do |registration| %>

<% end %>

一般来说,如果你真的想访问实例变量,你可以使用该instance_variable_get方法。然而,在您的示例中,它不起作用,因为 a)您试图在 Array 上调用它,并且 b)关联(belongs_to)不创建实例变量。

于 2012-08-17T11:24:40.363 回答