如何为nil:NilClass调试rails“undefined method'url'?”

时间:2015-05-14 22:17:58

标签: ruby-on-rails

我正在尝试学习rails,我想更深入地了解它是如何工作的。我可能会对什么应该是单数和什么应该是复数有些混淆。

我在数据库中有一个带有2列的封面表:url和path。

    db/schema.rb:

    ActiveRecord::Schema.define(version: 20150514120143) do
      create_table "covers", force: :cascade do |t|
        t.text "url",  null: false
        t.text "path"
      end
    ...

    app/controllers/covers_controller.rb:

     def index
        #render text: "hello from index in CoversController"
        # I can get this render message so I think the routing is ok
        @covers = Cover.all
      end
    ...
    app/models/cover.rb
    class Cover < ActiveRecord::Base
      validates :url, presence: true,
                        length: { minimum: 3 }
    end

    app/views/covers/index.html.erb:

    <h1>List Covers</h1>

    <table>

    <tr>
    <th>url</td>
    <th>path</td>
    </tr>

    <% @covers.each do |cover| %>
    <tr>
    <td><%= @cover.url %></td>
    <td><%= @cover.path %></td>
    </tr>
    <% end %>

    </table>

当我导航到http://localhost:3000/covers时,我收到此错误 nil的未定义方法`url':NilClass

麻烦真的是我得到的是NilClass而不是Cover(或Covers?)

1 个答案:

答案 0 :(得分:0)

使用此代码:

<% @covers.each do |cover| %>
  <tr>
    <td><%= cover.url %></td>
    <td><%= cover.path %></td>
  </tr>
<% end %>