Rails 构建函数包含 2 个对象

发布于 2024-10-10 06:23:36 字数 1041 浏览 0 评论 0原文

我有一个关于 Rails 3 中构建方法的问题。我想用项目和组的外键创建一个 Todo。

这些关联看起来像

Group has_many items 和 todos

Project has_many todos、belongs_to group

Todo owns_to 1 个项目和 1 个小组

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

工作完美。

该表单也可以完美地工作:

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

我现在的问题是 Todo-Controller 中的 CREATE 和 UPDATE 方法。

   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 或 group_id 保存在数据库中。但不是:

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

我现在的问题是,如何访问 group_id 和 project_id 并将它们都保存到数据库中。

I have a problem concerning the build method in rails 3. I want to create a Todo with foreignkeys of project and group.

The associations look like

Group has_many projects and todos

Project has_many todos, belongs_to group

Todo belongs_to 1 project and 1 group

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

work perfect.

The form also works perfectly with:

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

My problem is now the CREATE and UPDATE Method in the Todo-Controller.

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

If I write:

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

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

the project_id OR group_id is saved in the database. But not with:

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

My question is now, how I can get access of the group_id and the project_id and save them both into the database.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

不即不离 2024-10-17 06:23:36

最后我找到了一个可行的解决方案:

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

Finally I found a working solution:

    @group  = Group.find(params[:group_id])
    @todo   = @group.todos.build(params[:todo])    
    @todo.project = Project.find(params[:project_id])
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文