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 

Как это может случиться? Большое спасибо за Вашу помощь!

+1

Вы видите, что все ваши ссылки привязаны к категории? например есть category_id, что по какой-то причине не ноль? Попробуйте сделать это и скажите мне, что он возвращает: 'Link.all.collect (&: category_id) .include? (Nil)' – Zippie

+0

Спасибо за быстрый ответ! Когда я запускаю его в консоли, он возвращает false. В настоящее время в db есть только 1 ссылка, у нее есть правильный category_id. – Linus

+0

huh, я не знаю тогда .. Вы можете показать свой код вида, может быть? – Zippie

ответ

0

Возможно, я смогу помочь другим, столкнувшимся с одной и той же проблемой.

Категория_ид была назначена ссылке по форме, которая запрашивает существующие категории из db.

<%= f.select(:category_id, @categories.collect { |c| c.name }) %> 

Категория Я хотел назначить имеет идентификатор = 1. После выбора категории из выпадающего меню, то link.category_id был 0, оно должно было быть 1.

UPDATE:

Я исправил неверный индекс:

<%= f.collection_select :category_id, @categories, :id, :name, :prompt => "Select a category" %> 

 Смежные вопросы

  • Нет связанных вопросов^_^