Так что я использую превосходный Ancestry gem Но хотя документация кажется очень полной, я не понимаю, как передать параметр моего элемента, который я хочу быть родителем моего недавно созданного элемента , Во-первых, хочу ли я сделать это в действии new
или create
... позвольте мне объяснить. Например: (для краткости некоторые действия удалены)
class PeopleController < ApplicationController
#...
def new
@person = Person.new
end
def create
@user = User.new(params[:user])
if @user.save
flash[:notice] = "Registration Successful."
redirect_to root_url
else
render :action => 'new'
end
end
end
Так что именно я не знаю, где создать родословную, в документах сказано:
... Вы можете использовать родительский атрибут, чтобы организовать ваши записи в дерево. Если у вас есть идентификатор записи, которую вы хотите использовать в качестве родителя, и не хотите ее получать, вы также можете использовать parent_id
. Как и любые атрибуты виртуальной модели, parent
и parent_id
могут быть установлены с использованием parent=
и parent_id=
для записи или путем включения их в хеш, переданный new
, create
, create!
, update_attributes
и update_attributes!
. Например:
TreeNode.create! :name => 'Stinky', :parent => TreeNode.create!(:name => 'Squeeky')
Я хочу знать, как выглядит мой контроллер, чтобы я мог установить родителя @person при создании.
Так что иначе я застрял, я не знаю, что еще здесь делать ... но в любом случае, я знаю, что этот драгоценный камень похож на более популярный acts_as_tree
, любая помощь очень ценится!
Обновлено
Я думаю, что почти у меня есть, но когда я пытаюсь это для моего create action
def create
@parent = Recipe.find(params[:parent])
@recipe = Recipe.new(params[:recipe], :parent => @parent.id) do |recipe|
recipe.user_id = current_user.id
end
if @recipe.save
current_user.has_role!(:owner, @recipe)
redirect_to @recipe
else
render :action => 'new'
end
end
Я получаю:
Couldn't find Recipe without an ID
Обновлено
В моем представлении есть ссылка на действие new
, которое выглядит следующим образом <%= link_to "fork this recipe", {:controller => "recipes", :action => "new", :parent => @recipe} %>
Мне кажется, что это нормально, также URL-адрес хорошо читается, когда вы попадаете в форму, recipes/new?parent=112
, но я все еще получаю эту ошибку, должен быть способ передачи этого параметра в качестве родителя вновь созданный объект.