2009-12-04 109 views
0

如何定義兩個控制器之間的關係。我有一個名爲遊樂設施的管制員,另一名名爲註冊人。無論如何,我可以從遊樂設施控制器訪問註冊人數據庫嗎?我正在想2個控制器之間的關係

@registrant = Registrant.find(:first) 

從內部乘坐,但沒有奏效。 有什麼建議嗎?

感謝

+0

您可以從任何控制器訪問任何模型。上面的代碼應該可以工作。此外,我假設你的意思是註冊人表,而不是註冊人數據庫。 – 2009-12-04 04:58:59

+0

上面的行應該只是檢索第一個註冊人。那麼你是什麼意思:「但那不起作用」。你有錯誤消息?你想重定向到或呈現註冊人視圖嗎?您無法從乘車視角訪問註冊人?請解釋。 – nathanvda 2009-12-04 12:06:23

回答

2

您可以從您的遊戲機控制器訪問您的註冊模式,就像任何其他控制器訪問它。你是什​​麼意思Registrant.find(:first)不工作?

現在,如果您的遊樂設施模型和註冊人模型(如has_many關聯)之間存在關係(或通常稱爲關聯),則可以使用嵌套資源將一個控制器嵌套在另一個控制器中。

查看Action Controller OverviewRails Routing from the Outside In指南,並考慮收集一本關於類似Agile Web Development with Rails的Rails的好書。

+0

事實證明,我只是有一個大寫錯誤,它已經註冊到註冊人模式了!感謝您的幫助! – 2009-12-04 17:08:01

0

如果定義模式:駕駛和註冊(或更一般的用戶),那麼你可以設置遊樂設施控制器上的before_filter:

before_filter :get_user 

def get_user 
    @user = User.find(:first, :conditions => %Q(userid = "#{params[:user_id]}")) 
end 

這將取得與USER_ID傳過來的參數的用戶在控制器生成視圖之前。

+1

這似乎並沒有回答他的問題,更簡單地說你可以做'User.find(params [:user_id]'或者我錯過了什麼? – 2009-12-04 03:58:09

+0

糟糕,錯過了一個正確的paren在那裏。 – 2009-12-04 03:59:25

0

是的,這應該工作。爲了使術語正確,您正在從RidesController訪問註冊人模型。他們都應該在同一個數據庫中,但在單獨的表中。

請發佈您收到的錯誤消息。

相關問題