我需要向我的用户添加一些新的属性,我将在表单提交时通过从我的数据库中检索它们来定义,但是当我提交新属性时,nill并且我不知道为什么
def create
plan = params[:user][:plan]
@plan_vars = Plan.find(plan)
@user = User.new(user_params, :plan_id => @plan_vars.id, :lessons => @plan_vars.lessons)
if @user.save
flash[:success] = "Usuario creado exitosamente"
redirect_to users_path
else
flash[:warning] = "Ooops... algo ha fallado :O #{@user.errors}"
redirect_to new_user_path
end
end
这是用户参数
def user_params
params.require(:user).permit(:name, :email, :phone, :document, :password,
:password_confirmation)
end
答案 0 :(得分:1)
以下是该怎么做?
这样做:
@user = User.new(user_params)
@user.plan_id = @plan_vars.id
@user.lessons = @plan_vars.lessons
@user.save
如果使用嵌套表单或@plan_vars返回数组,则会产生另一种类型的错误
答案 1 :(得分:0)
您可以将计划参数合并到user_params
哈希
def user_params
params.require(:user).permit(:name, :email, :phone, :document, :password,
:password_confirmation)
.merge(plan_id: @plan_vars.id, lessons: @plan_vars.lessons)
end
def create
plan = params[:user][:plan]
@plan_vars = Plan.find(plan)
@user = User.new(user_params)
end
希望,这有帮助!
答案 2 :(得分:0)
我更喜欢类似@Lavika的回答,但是在创建动作上合并
def create
plan = params[:user][:plan]
@plan_vars = Plan.find(plan)
@user = User.new(user_params.merge(plan_id: @plan_vars.id, lessons: @plan_vars.lessons))
# ...
end
@pradeep sapkota的答案也是一个不错的选择