0
我的項目中出現了一個非常奇怪的問題。我有兩個模型,一個是Link和另一個類別。我有一個索引視圖,其中應列出所有鏈接以及相應的類別名稱。當運行的服務器,並嘗試使用Belongs_to只能通過控制檯識別,而不是服務器
<%= link.category.name %>
我得到一個錯誤頁面如下:
undefined method `name' for nil:NilClass
但是當我打開控制檯,並寫上:
link = Link.find(1) #there is currently only one link
link.category.name
它返回正確的類別名稱。
這裏是我的模型和schema.rb:
class Link < ActiveRecord::Base
attr_accessible :category_id, :description, :title, :url, :visible
belongs_to :category
scope :visible, lambda { where(visible: true) }
end
。
class Category < ActiveRecord::Base
attr_accessible :name
has_many :links
end
。
ActiveRecord::Schema.define(:version => 20130420070717) do
create_table "categories", :force => true do |t|
t.string "name"
t.datetime "created_at", :null => false
t.datetime "updated_at", :null => false
end
add_index "categories", ["id"], :name => "index_categories_on_id"
create_table "links", :force => true do |t|
t.string "title"
t.text "description"
t.string "url"
t.integer "category_id"
t.boolean "visible"
t.datetime "created_at", :null => false
t.datetime "updated_at", :null => false
end
add_index "links", ["category_id"], :name => "index_links_on_category_id"
add_index "links", ["id"], :name => "index_links_on_id"
end
這是怎麼發生的?非常感謝您的幫助!
你能否看到你的所有鏈接是否與一個類別綁定?例如由於某種原因,category_id不是零? 嘗試做到這一點,並告訴我它返回的是什麼:'Link.all.collect(&:category_id).include?(nil)' – Zippie 2013-04-20 08:45:51
感謝您的快速響應!當我在控制檯中執行它時,它返回false。目前db中只有1個鏈接,它有一個正確的category_id。 – Linus 2013-04-20 08:58:04
呵呵,我不知道..你可以展示你的視圖代碼嗎? – Zippie 2013-04-20 09:00:04