2016-02-28 66 views
0

在用戶註冊之前,我需要他創建一個挑戰。Date.parse與日期無效

這是challenges_controller:

def create 
    @challenge = Challenge.new(challenge_params) 
    if current_user == nil 
    session[:challenge_action] = challenge_params[:action] 
    session[:challenge_deadline] = [params["challenge"]["deadline(3i)"], params["challenge"]["deadline(2i)"], params["challenge"]["deadline(1i)"]].join('/') 
    redirect_to signup_path 
    end 
end 

的參數傳遞通過:

Parameters: {"challenge"=>{"action"=>"Run", "deadline"=>"2016-02-29"}, "button"=>""} 

actiondeadline參數傳遞,你可以在上面看到。但是,一旦新用戶創建新的挑戰不是創建:

ArgumentError (invalid date): 
    app/controllers/users_controller.rb:33:in `parse' 
    app/controllers/users_controller.rb:33:in `create' 

這是users_controller:

def create 
    @user = User.new(user_params) 
    if @user.save 
     action = session.delete(:challenge_action) 
     deadline = session.delete(:challenge_deadline) 
     # Create 
     if deadline.present? 
     @user.challenges.create(
      action: action, 
      deadline: Date.parse(deadline), #Focus of Question 
     ) 
     end 
     log_in @user 
     redirect_to root_url 
    end 

現在,如果我改變deadline: Date.parse(deadline)deadline: deadline那麼challenge是在創建新的用戶創建,但deadline不保存因爲某些原因:

pry(main)> Challenge.last 
id: 1, 
action: "Code", 
deadline: nil,> 
+0

'puts session.delete(:challenge_deadline)'please。 – Anthony

+0

嗨@安東尼。我這樣說:'action = session.delete(:challenge_action) deadline = session.delete(:challenge_deadline) puts session.delete(:challenge_deadline)''但我沒有看到任何東西,所以我不認爲這是你的意思是。但我確實認爲我知道問題來自哪裏。當我切換到'<%= f.date_select:deadline%>'時,它可以工作,但是當我切換回'<%= f.text_field:deadline,id:「update-challenge」時,%>'它沒有。有沒有辦法讓後者工作? '