2016-08-03 3 views
1

내 사용자에게 새 객체를 추가해야합니다. 새 객체를 내 데이터베이스에서 검색하여 양식을 제출할 때 정의 할 새로운 속성이 있지만 새 속성을 제출하면 nill은 알 수 없습니다. 왜 여기Ruby on rails 새 객체 속성

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 

답변

1

무엇을해야하는 것입니다 PARAMS 사용자는?

이 작업을 수행 : 중첩 된 형태로 사용하거나 다른 종류의 오류가 결과 배열 반환 @plan_vars있다

@user = User.new(user_params) 
@user.plan_id = @plan_vars.id 
@user.lessons = @plan_vars.lessons 
@user.save 

경우

+0

입니다

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! – mdiaz00147

+0

그런 다음 답변을 수락하십시오. 격려는 나를 도울 수있게 도와줍니다. –

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 

에 계획 PARAMS을 병합 할 수 있습니다 희망, 그게 도움이!

0

나는 Lavika의 대답 @ 비슷한을 선호하지만, 병합에 대한 조치 만들 sapkota의 대답도 완벽하게! 많은 감사를했습니다 좋은 옵션