嗨,我是一个初学者,我正在做什么似乎对我来说是一个常见的用例,它很有趣,在Rails中似乎很难做,而且互联网上关于这个主题的帖子不多:
我创建了一个新的rails应用程序。由于我有一个遗留数据库,我想在我的新rails应用程序中包含,我将“development.sqlite3”替换为遗留数据库“Listings.sqlite3”
然后我生成了一个模型“business.rb”来匹配我遗留数据库中的“业务”表。这是代码:
class Business < ActiveRecord::Base
establish_connection "Listings_development"
end
然后我修改了“config / database.yml”文件以包含以下内容:
Listings_development:
adapter: sqlite3
database: db/Listings.sqlite3
pool: 5
timeout: 5000
Listings_test:
adapter: sqlite3
database: db/Listings.sqlite3
pool: 5
timeout: 5000
Listings_production:
adapter: sqlite3
database: db/Listings.sqlite3
pool: 5
timeout: 5000
之后我生成了名为“businesses_controller.rb”的控制器,其中包含以下代码:
class BusinessesController < ApplicationController
def show
end
def index
@businesses = Business.all
respond_to do |format|
format.html #index.html.erb
end
end
end
最后我将“config / routes.rb”文件更改为以下内容:
Directory::Application.routes.draw do
resources :businesses
get "business/index"
match ':controller(/:action(/:id))(.:format)'
最后我添加了一个视图文件“index.html.erb:
<h1>Listing businesses</h1>
<table>
<tr>
<th>Name:</th>
<th>Phone Number:</th>
<th>Address:</th>
</tr>
<% @businesses.each do |business| %>
<tr>
<td><%= business.company_name %></td>
<td><%= business.phone_number %></td>
<td><%= business.address %></td>
我以为我已经完成了,我已经成功地将我的旧数据库及其数据整合到我的新rails应用程序中。但是当我在浏览器窗口中输入“http://localhost:3000/businesses/”时。我在屏幕上出现此错误:
Showing /Users/AM/Documents/RailsWS/cmdLineWS/Directory/app/views/businesses/index.html.erb
where line #14 raised:
undefined method `company_name' for #<Business:0x00000104e1d0e8>
Extracted source (around line #14):
11:
12: <% @businesses.each do |business| %>
13: <tr>
14: <td><%= business.company_name %></td>
15: <td><%= business.phone_number %></td>
16: <td><%= business.address %></td>
17: <td><%= link_to 'Show', business %></td>
Rails.root: /Users/AM/Documents/RailsWS/cmdLineWS/Directory
怎么了Rails?包含遗留数据库真的很复杂吗?我认为轨道的重点是快速原型制作。
以下是我的Listings.db文件的快照
答案 0 :(得分:0)
问题可能是由于企业列包含空格和大写字符(例如,我在屏幕截图中看到“公司名称”而不是想要的“company_name”)。我不知道rails是否支持这种属性名称。
BTW不是一个好的做法,在列名中有空格和其他奇怪的字符(以我的拙见)