2011-01-03 16 views
0

私はレール3のビルドメソッドに問題があります。プロジェクトとグループの外部キーを持つTodoを作成したいと思います。2つのオブジェクトを持つビルド関数

団体が

グループにhas_manyのプロジェクトのように見えると

プロジェクトにhas_manyのドスドス、グループbelongs_toの

藤堂は1つのプロジェクトと1グループ

My routes 
resources :groups do 
     resources :projects do 
      resources :todos 
     end 
end 

作業完璧をBELONGS_TO。

フォームもで完璧に動作します:

<%= form_for [@group, @project, @todo] do |f| %> 

私の問題は今、藤堂 - コントローラで作成および更新する方法です。

def create 
     @group = Group.find(params[:group_id]) 
     @project = Project.find(params[:project_id]) 
     @todo = @group.projects.todos.build(params[:todo]) 
     @todo.save 
    ... 

は私が書く場合:

@todo = @group.todos.build(params[:todo]) 

または @todo = @ project.todos.build(のparams [:TODO])

PROJECT_ID OR group_idのは、データベースに保存されます。しかしないで:

@todo = @group.projects.todos.build(params[:todo]) 

私の質問は、私はGROUP_IDとPROJECT_IDのアクセスを取得し、データベースにそれらの両方を保存することができますどのように、今あります。

@group = Group.find(params[:group_id]) 
    @todo = @group.todos.build(params[:todo])  
    @todo.project = Project.find(params[:project_id]) 

答えて

1

は、最後に私が働いて解決策を見つけました