Редактировать: похоже, что повторное определение @categories в методе create задачи помогло устранить ошибку. Все еще работаю над обновлением категории, когда я отправляю задачу, потому что сейчас она ее игнорирует. Есть идеи?
Всем привет,
Я пытаюсь создать раскрывающийся список в своем первом проекте Rails, чтобы выбрать из списка категорий задачу. Я использовал модель категоризации, чтобы связать модель задачи с категорией.
После некоторых усилий я получил раскрывающийся список, чтобы он правильно отображался в новой форме задачи, но когда я нажимаю «Отправить», форма выдает следующую ошибку:
NoMethodError in Tasks#create
You have a nil object when you didn't expect it!
You might have expected an instance of Array.
The error occurred while evaluating nil.map
Любая помощь, которую вы могли бы предоставить, очень ценится. Вот код, который я использую (отрывок для краткости)...
Соответствующая часть моей новой формы задачи (HAML):
= f.fields_for :categorization do |sub|
= sub.label :name, 'Category'
= sub.collection_select(:category_id, @categories, :id, :name, :include_blank => 'Select a Category')
tasks_controller.rb:
def new
@task = Task.new
@categories = Category.all
end
def create
@task = current_user.tasks.build(params[:task])
if @task.save
flash[:success] = "Task created!"
redirect_to root_path
else
render 'new'
end
end
categorization.rb:
class Categorization < ActiveRecord::Base
belongs_to :task
belongs_to :category
validates :task_id, :presence => true
validates :category_id, :presence => true
end
category.rb:
class Category < ActiveRecord::Base
has_many :categorizations, :dependent => :destroy
has_many :tasks, :through => :categorizations
validates :name, :presence => true
end
task.rb
class Task < ActiveRecord::Base
attr_accessible :title, :body
has_many :categorizations, :dependent => :destroy
has_many :categories, :through => :categorizations
accepts_nested_attributes_for :categorizations
validates :title, :presence => true
validates :body, :presence => true
end
routes.rb:
resources :tasks
resources :categories do
member do
get :tasks
end
end
Какие-нибудь мысли? Большое спасибо, что заглянули, и дайте мне знать, если вам нужно что-то еще, чтобы помочь.
Хайдн