我正在使用RoR制作仪表板,仪表板将向登录用户显示项目列表。
仪表板将位于单个页面上下文中。仪表板本身有一个控制器,项目有一个单独的控制器。
当我向仪表板发出请求时,它由仪表板控制器索引操作处理。我希望能够打印出一个项目列表。这些项目是从项目控制器上的getAll
方法返回的。
项目控制器需要用户的上下文,以便它可以正确地将用户与他们的项目匹配。我已经尝试将项目导出为
@projects
项目方法中的getAll
实例变量,但由于仪表板控制器是被调用的而不是项目控制器,因此该变量不在范围内或已初始化。
我计划通过使用@projects
集合的部分来显示视图中的项目。看来我也无法通过AJAX调用它,因为它需要用户的会话。
实现这个目标的最佳方法是什么?
答案 0 :(得分:0)
在仪表板控制器中使用这样的方法
def getprojects
@projects=Project.all
end
如果您想要特定用户的项目
def getprojects
@projects=Project.where(:user_id=>params[:user_id])
end
更新1
如果您不想重复逻辑,请更改路线以便直接访问项目控制器
答案 1 :(得分:0)
我已设法通过声明getAll
方法的静态版本来解决此问题,该方法又调用非静态版本。静态版本将用户会话作为参数,然后可以在非静态方法中使用。
该方法的静态版本可从传递用户会话的仪表板控制器中获得。