【问题标题】:using one controllers actions within another controllers views在另一个控制器视图中使用一个控制器操作
【发布时间】:2011-04-24 01:32:56
【问题描述】:

如何在另一个控制器视图中使用另一个控制器方法?

我有一个用户控制器和一个世界控制器,每个控制器都有自己的模型和视图。我正在尝试在用户视图中使用世界视图中的某些内容

<% @worlds.each do |world| %>
 ...
<% end %>

但我得到了 “当你没想到时,你有一个 nil 对象! 您可能期望有一个 Array 的实例。 评估 nil.each 时发生错误"

在 Worlds 视图中使用时,每个世界的此列表按预期工作

【问题讨论】:

    标签: ruby-on-rails


    【解决方案1】:

    只需在 UsersController 中的操作中定义您的 @worlds 变量:

    # UsersController
    def index
      @worlds = World.all
    end
    

    您应该明白,模型和控制器是不同的本质。是分开的。控制器可以使用任何模型。控制器是所有模型和特定视图之间的一层。

    【讨论】:

    • 那仍然会返回一个 Nil 对象。 UsersController 无权访问我的 WorldsController 的任何数据。
    • 你在说什么?您永远不需要访问另一个控制器中的任何数据。您需要通过您的模型从数据库中获取它。这是MVC的基础知识,所以我什至不知道是否有任何关于这个的教程:D
    • 显示您的 UsersController 和 WorldsController 并说明您要共享哪些数据
    • pastebin.com/a9eLwDSd - WorldsController pastebin.com/wsbF6VG5 - UsersController。当您转到他们的个人资料时,只是试图列出与用户关联的所有世界。我知道如何做到这一切。我的问题只是从用户/视图中访问信息
    • 谢谢!你提供的信息帮助我解决了我的问题,它教会了我一些东西。配置文件操作只是编辑操作。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-02
    • 1970-01-01
    • 2016-09-06
    相关资源
    最近更新 更多