从另一个控制器调用实例变量

时间:2014-05-10 11:41:34

标签: ruby model-view-controller instance-variables

说我有一个项目控制器

使用@project实例变量

我还有一个project_updates控制器

在我的project_updates / views / show中我可以调用@project变量吗?例如,我有@project实例的类别

在project_updates show视图中,我可以调用:

<% @project.categories.each do |cat| %>
  <li><%= cat.name %></li>
<% end %>

或者我是否需要以某种方式将实例变量从不同的控制器引入另一个控制器?

1 个答案:

答案 0 :(得分:3)

我可能过度简化了这一点,但是你可能认为你在另一个控制器中有一个变量,这可能不是真的。

当请求进入并路由到控制器时,将创建控制器的实例。如果那个其他控制器不是一些如何实例化为请求的一部分,那么你认为那个变量并不存在。

然而,确实存在模型(至少以数据库形式存在)。所以基本上我认为你应该尝试通过从模型中提取一些数据来获得在@project控制器中创建的project_updates变量。

如何在另一个控制器中创建@project变量?很可能你会在这个控制器中使用相同的方法来创建它,然后它就可以用于你的视图。