没有这样的表/未定义的方法'每个'

时间:2014-06-09 19:04:42

标签: ruby-on-rails

我和Rails一样新,所以如果这是一个明显的错误就道歉。

我最近创建了一个脚手架,为未来的商店网站添加了“行情”表。我把适当的模型和控制器放在一个模块“Project”中。现在我尝试链接到localhost:3000 / quotes,我收到以下错误消息:

    ActiveRecord::StatementInvalid in Project::Quotes#index
    Showing /Users/e/Documents/company/company-store/app/views/project/quotes/index.html.erb   where line #28 raised:

    SQLite3::SQLException: no such table: project_quotes: SELECT "project_quotes".* FROM "project_quotes"
    Extracted source (around line #28):


 </thead>

 <tbody>
   <% @quotes.each do |quote| %>
     <tr>
       <td><%= quote.first_name %></td>
       <td><%= quote.last_name %></td>

我的控制器页面如下所示:

    module Project
      class QuotesController < Project::BaseController
       before_action :set_quote, only: [:show, :edit, :update, :destroy]

        def index
          @quotes = Quote.all
        end

(等)

我尝试将视图页面和控制器从@ quotes.each更改为@ project_quotes.each,我收到相同的错误消息。当我只更改控制器或视图时,我收到此错误消息:

    undefined method `each' for nil:NilClass

我已经查看了StackOverflow对这类问题的反应,但最常见的反应是,我还没有建立表,没有意义,因为这来自一个脚手架,我跑了rake db :无事故地迁移。

    class CreateQuotes < ActiveRecord::Migration
      def change
        create_table :quotes do |t|
          t.string :first_name
          t.string :last_name
    #More fields that say essentially the same thing (email, etc.)

          t.timestamps
        end
      end
    end

我做错了什么?

1 个答案:

答案 0 :(得分:0)

我运行了一个迁移,将表名从quote更改为project_quote,这似乎已经成功了。谢谢你的帮助!