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