【发布时间】:2015-11-06 20:51:50
【问题描述】:
当nil 用户点击“注册”时,鼓励他在登录前提交目标、习惯和价值观。
但他可以通过点击跳过其中一种形式:
问题是,如果他现在跳过一个表格,就会弹出一条错误消息:
TypeError in UsersController#create
no implicit conversion of nil into String
在这个例子中,我跳过了习惯形式,所以它在@user.habits.create(上提出
users_controller
def create
@user = User.new(user_params)
if @user.save
# Goals
name = session.delete(:goal_name)
deadline = session.delete(:goal_deadline)
# Values
vname = session.delete(:valuation_name)
vimage = session.delete(:valuation_image)
# Habits
date_started = session.delete(:habit_date_started)
committed = session.delete(:habit_committed)
trigger = session.delete(:habit_trigger)
action = session.delete(:habit_action)
target = session.delete(:habit_target)
reward = session.delete(:habit_reward)
missed_days = session.delete(:habit_missed_days)
# Create
@user.habits.create(date_started: Date.parse(date_started), committed: committed, trigger: trigger, action: action, target: target, reward: reward, missed_days: missed_days).create_with_current_level
@user.goals.create(name: name, deadline: deadline)
@user.valuations.create(name: vname, image: vimage)
@user.send_activation_email
redirect_to root_url
else
render 'new'
end
end
我们怎样才能让用户跳过?我一直在尝试包含各种 if/else 语句,但我很难设置正确的方法来触发条件。
【问题讨论】:
-
错误发生在哪一行?
-
@blnc 它发生在我跳过的任何形式上,所以在这个例子中我跳过了习惯形式,所以它在 @user.habits.create(
-
它应该告诉你错误发生在哪一行。可能是尝试将“Nil”值分配给期望“String”值的对象的结果。
标签: ruby-on-rails ruby session