2009-12-04 138 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访问注册人模型。他们都应该在同一个数据库中,但在单独的表中。

请发布您收到的错误消息。

相关问题