У меня есть приложение Rails, которое имеет 2 базы данных.
- Старая БД с таблицей под названием: Бизнес
- обычная БД для разработки, которая поставляется с приложением rails.
У меня есть данные в таблице «Бизнес», которые я хочу поместить в БД разработки. Для этого я предпринял следующие шаги:
Настройте приложение так, чтобы я мог читать из базы данных «Бизнес» и видеть результаты в браузере.
Я достиг этого, создав модель Business
и класс BusinessesController
, который считывает все данные из таблицы businesses
и сохраняет записи в переменной экземпляра @businesses
Затем я создал модель под названием Listing
и ListingsController
. Я хотел бы прочитать все записи из @businesses
в BusinessesController
и сохранить их в @listings
в ListingsController
.
Таким образом, по сути, все, что мне нужно сделать, это взять данные, хранящиеся в одной переменной экземпляра, и сохранить их в другой переменной экземпляра. Я не уверен, как это сделать в Rails.
Пока у меня есть следующие классы:
Buisiness
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
index.html.erb
<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
index.html.erb
<h1>Listings</h1>
<p>This is where all Listings will show up</p>
<%= @listings.inspect %> <br/>
<%= @businesses.inspect %>
Когда я иду на URL
http://localhost:3000/businesses
Я вижу таблицу всех записей в моей прежней БД - таблица предприятий в браузере
Но когда я иду на URL:
http://localhost:3000/listings
Я вижу только текст заполнителя и для значений @businesses
& @listings
Я вижу nil
.
Очевидно, что переменная @businesses
недоступна в классе ListingsController
. Мне интересно, как лучше всего передавать данные между этими двумя контроллерами.