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"=>""}
的action
和deadline
參數傳遞,你可以在上面看到。但是,一旦新用戶創建新的挑戰不是創建:
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,>
'puts session.delete(:challenge_deadline)'please。 – Anthony
嗨@安東尼。我這樣說:'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」時,%>'它沒有。有沒有辦法讓後者工作? '