从另一个控制器访问ruby控制器

时间:2016-02-18 15:48:41

标签: jquery ruby-on-rails ruby ajax model-view-controller

我正在使用RoR制作仪表板,仪表板将向登录用户显示项目列表。

仪表板将位于单个页面上下文中。仪表板本身有一个控制器,项目有一个单独的控制器。

当我向仪表板发出请求时,它由仪表板控制器索引操作处理。我希望能够打印出一个项目列表。这些项目是从项目控制器上的getAll方法返回的。

项目控制器需要用户的上下文,以便它可以正确地将用户与他们的项目匹配。我已经尝试将项目导出为 @projects项目方法中的getAll实例变量,但由于仪表板控制器是被调用的而不是项目控制器,因此该变量不在范围内或已初始化。

我计划通过使用@projects集合的部分来显示视图中的项目。看来我也无法通过AJAX调用它,因为它需要用户的会话。

实现这个目标的最佳方法是什么?

2 个答案:

答案 0 :(得分:0)

在仪表板控制器中使用这样的方法

def getprojects
@projects=Project.all
end

如果您想要特定用户的项目

   def getprojects
   @projects=Project.where(:user_id=>params[:user_id])
   end

更新1

如果您不想重复逻辑,请更改路线以便直接访问项目控制器

答案 1 :(得分:0)

我已设法通过声明getAll方法的静态版本来解决此问题,该方法又调用非静态版本。静态版本将用户会话作为参数,然后可以在非静态方法中使用。

该方法的静态版本可从传递用户会话的仪表板控制器中获得。