2011-09-03 84 views
1

下面的代码工作正常,一切都很好地关联。rails 3 - 关联帮助

但是,这不是我想要的。

当我创建一个新任务时,我希望任务与列表相关联,并且我也知道它具有当前用户的user_id。我已经将user_id字段添加到列表表中,但是当表单提交user_id时为零。

如果你可以请解释我将如何修改我的代码来实现这一点,我将非常感激。

这里是我的当前设置...

#routes 

resources :accounts do 
    resources :users do 
     resources :lists do 
     resources :tasks 
     end 
    end 
    end 


#account model 
    has_many :users 

#user model 
    belongs_to :account 
    has_many :lists 
    has_many :tasks, :through => :lists 

#task model 
    belongs_to :list 

#list model 
    belongs_to :user 
    has_many :tasks 
+1

我不会嵌套你的资源。如果您想在稍后对路由进行更改,则会导致很多控制器和form_for更改等。 – drummondj

+0

好的,您能否解释另一种设置方法?谢谢! – jBeas

回答

2

你或许可以仍然窝列表和任务:

resources :accounts 
resources :users 
resources :lists do 
    resources :tasks 
end 

然后保存例如任务,在你做tasks_controller:

@list = List.find(params[:list_id]) 
@task = @list.tasks.new(params[:task]) 
@task.user = current_user 

假设你有一个方法,比如current_user来获取当前登录的用户。

+0

我的表单对于tasks/new.htnl.erb会是什么样子? semantic_form_for [@ task.list,@task]不起作用,那我通常会这样做 – jBeas

+0

你的新方法在tasks_controller中看起来像什么? – drummondj