Я работаю над проектом, в котором есть задачи, которые составляют охоту за мусором. Когда пользователь создает новую охоту, я хотел бы, чтобы файл hunts / show.html.erb отображал охоту, а также задачи, связанные с этой охотой. Но модели доставляют мне неприятности. Я настроил модель поиска так, чтобы она принимала вложенные атрибуты для модели задач. Поэтому, когда пользователь создает новую охоту, он также автоматически создает три задачи. Я могу получить новую охоту для сохранения, но я не могу сохранить эти новые задачи для сохранения. Вот мои модели.
Чего не хватает? Нужен ли оператор "attr available" в файле HunTasks.rb?
class Hunt < ActiveRecord::Base
has_many :hunt_tasks
has_many :tasks, :through => :hunt_tasks
accepts_nested_attributes_for :tasks, :reject_if => lambda { |a| a[:content].blank? }, :allow_destroy => true
attr_accessible :name
validates :name, :presence => true,
:length => { :maximum => 50 } ,
:uniqueness => { :case_sensitive => false }
end
class Task < ActiveRecord::Base
has_many :hunt_tasks
has_many :hunts, :through => :hunt_tasks
attr_accessible :name
validates :name, :presence => true,
:length => { :maximum => 50 } ,
:uniqueness => { :case_sensitive => false }
end
class HuntTask < ActiveRecord::Base
belongs_to :hunt # the id for the association is in this table
belongs_to :task
end
Вот как выглядит мой контроллер Hunt:
class HuntsController < ApplicationController
def index
@title = "All Hunts"
@hunts = Hunt.paginate(:page => params[:page])
end
def show
@hunt = Hunt.find(params[:id])
@title = @hunt.name
@tasks = @hunt.tasks.paginate(:page => params[:page])
end
def new
if current_user?(nil) then
redirect_to signin_path
else
@hunt = Hunt.new
@title = "New Hunt"
3.times do
hunt = @hunt.tasks.build
end
end
end
def create
@hunt = Hunt.new(params[:hunt])
if @hunt.save
flash[:success] = "Hunt created!"
redirect_to hunts_path
else
@title = "New Hunt"
render 'new'
end
end
....
end