заменил db / development.sqlite3 на db / Listings.sqlite3 (предварительно заполненная база данных), получив ОШИБКУ: неопределенный метод - PullRequest
0 голосов
/ 09 марта 2012

Привет, я новичок в рельсах, и то, что я делаю, пока что является для меня обычным делом, забавно, что в Rails кажется, что это трудно сделать, и в Интернете не так много сообщений на эту тему:

  1. Я создал новое приложение rails. Так как у меня была устаревшая база данных, которую я хотел включить в свое новое приложение rails, я заменил «development.sqlite3» на устаревшую базу данных «Listings.sqlite3»

  2. Затем я сгенерировал модель "business.rb", чтобы она соответствовала таблице "Бизнес" в моей прежней базе данных. Вот код для этого:

    class Business < ActiveRecord::Base
    
      establish_connection "Listings_development"
    
    end
    
  3. Затем я изменил файл 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
    
  4. После этого я сгенерировал контроллер с именем «business_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
    
  5. Наконец я изменил файл "config / rout.rb" на следующий:

    Directory::Application.routes.draw do
      resources :businesses
    
    
      get "business/index"
    
      match ':controller(/:action(/:id))(.:format)'
    
  6. Наконец я добавил файл представления "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 enter image description here

1 Ответ

0 голосов
/ 09 марта 2012

Проблема может быть вызвана тем фактом, что столбцы предприятий содержат пробелы и заглавные буквы (например, я вижу «Название компании» на скриншоте вместо требуемого «название компании»). Я не знаю, поддерживают ли рельсы такие имена атрибутов.

Кстати, плохая практика - иметь пробелы и другие странные символы в именах столбцов (по моему скромному мнению)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...