[英]Rails: passing data from instance variable in 1 controller to instance variable in another controller
我有一个有2个数据库的Rails应用程序。
我在Businesses表中有要放入开发数据库的数据。 为此,我采取了以下步骤:
设置应用程序,以便我可以从Businesses DB中读取并在浏览器中查看输出。 我通过创建模型Business
和BusinessesController
类来完成此任务,该类从businesses
表中读取所有数据,并将条目存储在实例变量@businesses
然后,我创建了一个名为Listing
和ListingsController
的模型。 我想从阅读所有条目@businesses
在BusinessesController
并将其存储在@listings
在ListingsController
。
因此,基本上我要做的就是获取存储在一个实例变量中的数据并将其保存在另一个实例变量中。 我不确定如何在Rails中执行此操作。
到目前为止,我有以下课程:
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
<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
我只看到占位符文本以及@businesses
和@listings
值,我看到的是nil
。
因此,很明显@businesses
变量在ListingsController
类中不可访问。 我想知道如何在这两个控制器之间最好地传递数据。
你做错了! 您永远不需要控制器就可以与MVC模式中的另一个控制器进行通信。 您的模型应该是知道如何获取数据的唯一负责人,因此您将在两个控制器中都使用该模型。 业务逻辑存在于模型中。
您应该在清单控制器中使用业务模型
@listings = Business.all
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.