2012-08-17 51 views
0

我有一個期間控制器的顯示頁面。我想要做的是顯示該時期的所有註冊信息。鏈接方法時可以使用實例變量嗎?

在我的期模型我有:has_many :registrations,而在我的註冊模式,我有belongs_to :period

我想要做的是這樣的:

<% [email protected] do |registration| %> 

    <% end %> 

似乎不是工作,雖然。我該如何做這項工作?並沒有得到錯誤syntax error, unexpected tIVAR [email protected] do |registration|

回答

4

不,你不能這樣做。實例變量是總是私有,你不能從從實例外部訪問它們。 唯一的方式與對象交互是通過發送消息。

所以,如果你想從外部訪問一個實例變量,你需要爲它定義一個getter方法。

謝天謝地,belongs_to :period已經爲您定義了一個名爲period的getter方法,因此您可以使用它。

+0

所以,'<%registrations.period.each do | registration | %>'應該工作嗎?我得到了#<#的未定義局部變量或方法'註冊':0x007ff065452538>' – 2012-08-17 11:23:22

+0

嘗試'@period.registrations.each做...' – 2012-08-17 11:26:43

0

我想你可能想要的是

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

<% end %> 

一般來說,如果你真的想訪問實例變量,你可以使用instance_variable_get方法。然而,在你的例子中,它不會工作,因爲:a)你試圖在數組上調用它,b)關聯(belongs_to)不創建實例變量。

+0

但是,我在期間顯示頁面。那麼,我在我的控制器中創建一個實例變量以進行註冊? – 2012-08-17 11:26:44

相關問題