У меня очень странная проблема с моим проектом. У меня две модели, одна - 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
Спасибо за быстрый ответ! Когда я запускаю его в консоли, он возвращает false. В настоящее время в db есть только 1 ссылка, у нее есть правильный category_id. – Linus
huh, я не знаю тогда .. Вы можете показать свой код вида, может быть? – Zippie