Ruby on rails Rails组合框问题有很多:通过关系

Ruby on rails Rails组合框问题有很多:通过关系,ruby-on-rails,ruby,ruby-on-rails-3,activerecord,Ruby On Rails,Ruby,Ruby On Rails 3,Activerecord,请帮我解决这个问题。 我的问题是,我有两个模型,即用户和项目之间有许多贯穿关系 现在我想创建一个新用户,并在创建用户时为用户分配一个或多个项目。项目名称将从users/_form.html.erb中的下拉列表中选择,该列表将从项目模型中填充。 我想在projectsusers数据库表中创建新用户时保存数据,如下所示: 项目id用户id 1 1 2 1 3.1 当我创建新用户时,我收到以下错误:对于ID为的用户,找不到ID为1

请帮我解决这个问题。 我的问题是,我有两个模型,即用户和项目之间有许多贯穿关系

现在我想创建一个新用户,并在创建用户时为用户分配一个或多个项目。项目名称将从users/_form.html.erb中的下拉列表中选择,该列表将从项目模型中填充。 我想在projectsusers数据库表中创建新用户时保存数据,如下所示: 项目id用户id 1 1 2 1 3.1

当我创建新用户时,我收到以下错误:对于ID为的用户,找不到ID为1的项目

代码

class User < ActiveRecord::Base
  attr_accessible :name, :projects_attributes
  has_many :project_users, :class_name => 'Projectuser'
  has_many :projects, through: :project_users
  accepts_nested_attributes_for :projects, :allow_destroy => true
end


class Project < ActiveRecord::Base
  attr_accessible :name
  has_many :project_users
  has_many :users, :through => :project_users

end


class Projectuser < ActiveRecord::Base
  attr_accessible :project_id, :user_id
  belongs_to :user
  belongs_to :project
end

 controller
   class UsersController < ApplicationController
结束

获取/users/1 GET/users/1.json def秀 @user=user.findparams[:id]

respond_to do |format|
  format.html # show.html.erb
  format.json { render json: @user }
end
respond_to do |format|
  if @user.update_attributes(params[:user])
    format.html { redirect_to @user, notice: 'User was successfully updated.' }
    format.json { head :no_content }
  else
    format.html { render action: "edit" }
    format.json { render json: @user.errors, status: :unprocessable_entity }
  end
end
结束

获取/用户/新建 GET/users/new.json def新 @user=user.new

respond_to do |format|
  format.html # new.html.erb
  format.json { render json: @user }
end
结束

获取/用户/1/编辑 定义编辑 @user=user.findparams[:id] 结束

帖子/用户 POST/users.json def创建 @user=user.newparams[:user]

@user.project_users.build
respond_to do |format|
  if @user.save

    #@user.project_users.update_attributes(params[][:projects_attributes])
    format.html { redirect_to @user, notice: 'User was successfully created.' }
    format.json { render json: @user, status: :created, location: @user }
  else
    format.html { render action: "new" }
    format.json { render json: @user.errors, status: :unprocessable_entity }
  end
end
结束

PUT/users/1 PUT/users/1.json def更新 @user=user.findparams[:id]

respond_to do |format|
  format.html # show.html.erb
  format.json { render json: @user }
end
respond_to do |format|
  if @user.update_attributes(params[:user])
    format.html { redirect_to @user, notice: 'User was successfully updated.' }
    format.json { head :no_content }
  else
    format.html { render action: "edit" }
    format.json { render json: @user.errors, status: :unprocessable_entity }
  end
end
结束

删除/users/1 删除/users/1.json def销毁 @user=user.findparams[:id] @用户破坏

respond_to do |format|
  format.html { redirect_to users_url }
  format.json { head :no_content }
end
结束 结束

错误日志:

于2013-10-02 16:10:25+0600开始发布127.0.0.1的帖子/用户 用户处理控件创建为HTML 参数:{utf8=>✓, 真实性\U令牌=>nCsy6E1MuAoMK7hGwAcMNJFVvmq60Bz75lqLLECxb/U=,用户=>{name=>talha,项目\U属性=>{138070860908=>{id=>1,\U销毁=>false}},提交=>Create user} 项目加载0.1ms选择项目。*从项目内部加入projects.id=projectusers.Project\u id,其中projectusers.user\u id为NULL,projects.id为1 32ms内未找到完成的404

ActiveRecord::RecordNotFound无法为ID为的用户找到ID为1的项目: app/controllers/users\u controller.rb:43:in new' app/controllers/users\u controller.rb:43:递增'

Rendered/Users/maruf/.rvm/gems/ruby-1.9.3-p429/gems/actionpack-3.2.13/lib/action\u dispatch/middleware/templates/rescues//u trace.erb 1.1ms Rendered/Users/maruf/.rvm/gems/ruby-1.9.3-p429/gems/actionpack-3.2.13/lib/action\u dispatch/middleware/templates/rescues//u request\u and\u response.erb 0.9ms rescues/layout 7.1ms中的Rendered/Users/maruf/.rvm/gems/ruby-1.9.3-p429/gems/actionpack-3.2.13/lib/action\u dispatch/middleware/templates/rescues/diagnostics.erb


提前感谢各位………

我已经在用户模型中更改了:project\u用户的accepts\u nested\u属性 在我使用的task\u form.collection\u select:project\u id,project.all,:id,:name,:multiple=>true的表单中
是的……

你可以发布你的控制器代码吗?当然可以。请检查我是否编辑了问题并添加了控制器代码。如果有任何帮助,我们将不胜感激。谢谢您的时间。您需要发布控制器中的所有代码。在app/controllers/users\u controller.rb的第43行发生了什么?我已经发布了用户控制器的所有代码。在第43行,我有这个代码@user=user。newparams[:user]感谢@Farley Knight为您花费的宝贵时间。我已经解决了这个问题。我已经为:project\u users编写了接受嵌套属性的代码,:allow_destroy=>true在用户模型中,然后在我编写的task_表单中。collection_select:project_id,project.all,:id,:name,:prompt=>please select projects,:multiple=>true在这一更改后,它的工作性能非常好。