[英]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.