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) 配列でそれを呼び出そうとしていて、b) 関連付け ( belongs_to) がインスタンス変数を作成しないため、機能しません。

于 2012-08-17T11:24:40.363 に答える