Я пытаюсь создать simple_form_for
в Rails 3.2 для @objects
с двойным вложенным маршрутом, например:
/users/1/projects/2/objects
Форма:
<%= simple_form_for @object, :url => user_project_objects_path(@user, @project), :html => { :class => 'form-horizontal' } do |f| %>
В route.rb:
resources :users do
resources :projects do
resources :objects do
collection { post :import }
end
end
end
Мой вопрос: что происходит в действиях new
и create
контроллера Object
?
До сих пор - и я получаю ошибку маршрутизации - у меня есть:
def create
@user = current_user
@project = Project.find_by_user_id(@user)
@object = @project.objects.build(params[:object])
if @object.save
flash[:notice] = "Object was successfully created"
redirect_to user_project_objects_path
else
render 'new'
end
end
def new
@user = current_user
@project = Project.find_by_user_id(@user)
@object = @project.objects.build
end
Любые советы очень ценятся.
В ответ на Грег В:
No route matches {:action=>"edit", :controller=>"objects", :user_id=>#<Object id: 8, source_lang_id: 1, source_content: "Kaffehaus", target_lang_id: 2, target_content: "cafe", domain_id: 2, owner_id: nil, created_at: "2013-01-04 06:36:55", updated_at: "2013-01-04 06:36:55", project_id: 2>}
owner_id
(пользователь, то есть текущий_пользователь) не обновляется - и это может быть проблемой (?)
user_project_objects_path
послеredirect_to
. Вероятно, для указания идентификатора проекта требуется аргумент. то естьuser_project_objects_path(@project)
. - person Greg W   schedule 04.01.2013