我有一个Rails应用程序,它有2个数据库。
我在Businesses表中有数据要放入开发数据库中。为此,我采取了以下步骤:
设置应用程序,以便我可以从Businesses DB中读取并在浏览器中查看输出。
我通过创建模型Business
和BusinessesController
类来完成此操作,该类读取businesses
表中的所有数据并将条目存储在实例变量@businesses
然后我创建了一个名为Listing
和ListingsController
的模型。我想阅读@businesses
中BusinessesController
的所有条目,并将其存储在@listings
的{{1}}中。
因此,基本上我需要做的就是将数据存储在一个实例变量中并将其保存在另一个实例变量中。我不知道如何在Rails中这样做。
到目前为止,我有以下课程:
ListingsController
class Business < ActiveRecord::Base
establish_connection "Listings_development"
end
class BusinessesController < ApplicationController
def get_all
@businesses = Business.all
end
def index
self.get_all
respond_to do |format|
format.html #index.html.erb
end
end
end
<h1>Listing businesses</h1>
<table>
<tr>
<th>Index</th>
<th>Name</th>
<th>Phone Number</th>
<th>Suite</th>
<th>Address</th>
<th>City</th>
<th>Province</th>
<th>Postal Code</th>
<th>Fax</th>
<th>Latitude</th>
<th>Longitude</th>
<th>Website</th>
</tr>
<% count = 0 %>
<% @businesses.each do |business| %>
<!--<%=business.inspect %> <br> <br>-->
<%count = count.to_i + 1 %>
<tr>
<td><%= business.bid %></td>
<td><%= business.company_name %></td>
<td><%= business.phone_number %></td>
<td><%= business.suite_number %></td>
<td><%= business.address %></td>
<td><%= business.city %></td>
<td><%= business.province %></td>
<td><%= business.postal_code %></td>
<td><%= business.fax_number %></td>
<td><%= business.latitude %></td>
<td><%= business.longitude %></td>
<td><%= business.website %></td>
<% end %>
</table>
<br />
<%= link_to 'New Business', new_business_path %>
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
当我去url时
<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
&amp;的价值观。 @businesses
我看到@listings
。
很明显,nil
类中无法访问@businesses
变量。我想知道如何在这两个控制器之间传递数据。
答案 0 :(得分:5)
你做错了!您永远不需要控制器与MVC模式中的另一个控制器通信。您的模型应该是唯一负责知道如何获取数据的模型,因此您将在两个控制器中使用该模型。商业逻辑生活在模特身上。
您应该在列表控制器中使用业务模型
@listings = Business.all