Ruby on rails Rails:将数据从一个控制器中的实例变量传递到另一个控制器中的实例变量

Ruby on rails Rails:将数据从一个控制器中的实例变量传递到另一个控制器中的实例变量,ruby-on-rails,ruby,Ruby On Rails,Ruby,我有一个Rails应用程序,它有两个数据库 遗留数据库,表名为:businesss rails应用程序附带的常规开发数据库 我想将业务表中的数据放入开发数据库。为此,我采取了以下步骤: 设置应用程序,以便我可以从业务数据库中读取数据并在浏览器中查看输出。 我通过创建一个模型Business和一个BusinessesController类来实现这一点,该类读取businesss表中的所有数据,并将条目存储在一个实例变量@businesss 然后我创建了一个名为Listing的模型和一个Listin

我有一个Rails应用程序,它有两个数据库

  • 遗留数据库,表名为:businesss
  • rails应用程序附带的常规开发数据库
  • 我想将业务表中的数据放入开发数据库。为此,我采取了以下步骤:

  • 设置应用程序,以便我可以从业务数据库中读取数据并在浏览器中查看输出。 我通过创建一个模型
    Business
    和一个
    BusinessesController
    类来实现这一点,该类读取
    businesss
    表中的所有数据,并将条目存储在一个实例变量
    @businesss

  • 然后我创建了一个名为
    Listing
    的模型和一个
    ListingsController
    。我想读取
    业务控制器
    @业务
    中的所有条目,并将它们存储在
    列表控制器
    中的
    @列表

  • 因此,本质上我需要做的就是获取存储在一个实例变量中的数据,并将其保存在另一个实例变量中。我不知道如何在Rails中实现这一点

    到目前为止,我有以下课程:

    业务 我可以在浏览器中看到旧版DB-Businesss表中所有条目的表格

    但当我转到url时:

    http://localhost:3000/listings
    
    我只看到占位符文本,对于
    @business
    &
    @listings
    的值,我看到
    nil


    因此很明显,
    @businesss
    变量在
    ListingsController
    类中是不可访问的。我想知道如何最好地在这两个控制器之间传递数据。

    你做错了!在MVC模式中,您永远不应该需要一个控制器来与另一个控制器通信。您的模型应该是唯一负责知道如何获取数据的人,因此您将在两个控制器中使用该模型。业务逻辑依赖于模型

    您应该在Listings controller中使用业务模型

    @listings = Business.all
    

    请阅读如何正确使用。另外,我认为如果你告诉我们你真正想要完成的事情会更好,因为不管是什么,你都没有正确的方法。抱歉!我同意安德鲁的观点,例如,你现在只是想传输数据吗?Rails可能是一个错误的选择。哇!你很棒。这就解决了问题。我一整天都在为这个问题苦苦挣扎,试图自己解决它。非常感谢!这只是Rails的一个基本概念。事实上,我对这门课也不熟悉:)但我没有错过那门课
    class Listing < ActiveRecord::Base
      attr_accessor :name, :telephone
    
      def initialize(attributes = {})
        @name = attributes[:name]
        @telephone = attributes[:telephone]
        @latitude = attributes[:latitude]
        @longitude = attributes[:longitude]
    
        puts 'Created a new Listing'
      end
    end
    
    class ListingsController < ApplicationController
      def get_all
        @listings = @businesses
        # @listings = businesses_controller.get_all
      end
    
      def index   
        self.get_all
    
        respond_to do |format|
          format.html #index.html.erb
        end
      end
    end
    
    <h1>Listings</h1>
    
    <p>This is where all Listings will show up</p>
    <%= @listings.inspect %> <br/>
    <%= @businesses.inspect %>
    
    http://localhost:3000/businesses
    
    http://localhost:3000/listings
    
    @listings = Business.all